mbtowc.c

来自「基于4个mips核的noc设计」· C语言 代码 · 共 48 行

C
48
字号
/* * ansi/stdlib/mbtowc.c * ANSI/ISO 9899-1990, Section 7.10.7.2. * * int mbtowc(wchar_t *pwc, const char *s, size_t n) * Convert multibyte character to wide character. * Assumes multibyte encoding as defined in mb_encode.h. */#include <stdlib.h>#include "mb_encode.h"intmbtowc(wchar_t *pwc, const char *s, size_t n){	register wchar_t w;	register int count;	register unsigned int b1, b2, b3;	if (s == NULL)		return 0;		/* encoding is not state-dependent */	b1 = *(unsigned char *)s;	if (b1 == 0) {		if (pwc != (wchar_t *)NULL)			*pwc = 0;		return 0;		/* *s is null character */	} else if (n == 0)		return -1;		/* 0 chars are not a valid encoding */	else if (is1byte(b1)) {		/* *s encodes in one byte */		count = 1;		w = (wchar_t) b1;	} else if (n < 3)		return -1;		/* *s encodes in 3 but n < 3 */	else {		count = 3;		b2 = * (unsigned char *) ++s;		b3 = * (unsigned char *) ++s;		if (!is3byte(b1, b2, b3))			return -1;	/* s is not a valid encoding string */		w = (wchar_t) decode(b1, b2, b3);	}	if (pwc != (wchar_t *)NULL)		*pwc = w;	return count;}/* end of mbtowc.c */

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?