亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? doscan.c

?? minix操作系統最新版本(3.1.1)的源代碼
?? C
字號:
/* * doscan.c - scan formatted input *//* $Header: /cvsup/minix/src/lib/stdio/doscan.c,v 1.1.1.1 2005/04/21 14:56:35 beng Exp $ */#include	<stdio.h>#include	<stdlib.h>#include	<ctype.h>#include	<stdarg.h>#include	"loc_incl.h"#if	_EM_WSIZE == _EM_PSIZE#define set_pointer(flags)				/* nothing */#elif	_EM_LSIZE == _EM_PSIZE#define set_pointer(flags)	(flags |= FL_LONG)#else#error garbage pointer size#define set_pointer(flags)		/* compilation might continue */#endif#define	NUMLEN	512#define	NR_CHARS	256static char	Xtable[NR_CHARS];static char	inp_buf[NUMLEN];/* Collect a number of characters which constitite an ordinal number. * When the type is 'i', the base can be 8, 10, or 16, depending on the * first 1 or 2 characters. This means that the base must be adjusted * according to the format of the number. At the end of the function, base * is then set to 0, so strtol() will get the right argument. */static char *o_collect(register int c, register FILE *stream, char type,			unsigned int width, int *basep){	register char *bufp = inp_buf;	register int base;	switch (type) {	case 'i':	/* i means octal, decimal or hexadecimal */	case 'p':	case 'x':	case 'X':	base = 16;	break;	case 'd':	case 'u':	base = 10;	break;	case 'o':	base = 8;	break;	case 'b':	base = 2;	break;	}	if (c == '-' || c == '+') {		*bufp++ = c;		if (--width)		    c = getc(stream);	}	if (width && c == '0' && base == 16) {		*bufp++ = c;		if (--width)			c = getc(stream);		if (c != 'x' && c != 'X') {			if (type == 'i') base = 8;		}		else if (width) {			*bufp++ = c;			if (--width)				c = getc(stream);		}	}	else if (type == 'i') base = 10;	while (width) {		if (((base == 10) && isdigit(c))		    || ((base == 16) && isxdigit(c))		    || ((base == 8) && isdigit(c) && (c < '8'))		    || ((base == 2) && isdigit(c) && (c < '2'))) {			*bufp++ = c;			if (--width)				c = getc(stream);		}		else break;	}	if (width && c != EOF) ungetc(c, stream);	if (type == 'i') base = 0;	*basep = base;	*bufp = '\0';	return bufp - 1;}#ifndef	NOFLOAT/* The function f_collect() reads a string that has the format of a * floating-point number. The function returns as soon as a format-error * is encountered, leaving the offending character in the input. This means * that 1.el leaves the 'l' in the input queue. Since all detection of * format errors is done here, _doscan() doesn't call strtod() when it's * not necessary, although the use of the width field can cause incomplete * numbers to be passed to strtod(). (e.g. 1.3e+) */static char *f_collect(register int c, register FILE *stream, register unsigned int width){	register char *bufp = inp_buf;	int digit_seen = 0;	if (c == '-' || c == '+') {		*bufp++ = c;		if (--width)			c = getc(stream);	}	while (width && isdigit(c)) {		digit_seen++;		*bufp++ = c;		if (--width)			c = getc(stream);	}	if (width && c == '.') {		*bufp++ = c;		if(--width)			c = getc(stream);		while (width && isdigit(c)) {			digit_seen++;			*bufp++ = c;			if (--width)				c = getc(stream);		}	}	if (!digit_seen) {		if (width && c != EOF) ungetc(c, stream);		return inp_buf - 1;	}	else digit_seen = 0;	if (width && (c == 'e' || c == 'E')) {		*bufp++ = c;		if (--width)			c = getc(stream);		if (width && (c == '+' || c == '-')) {			*bufp++ = c;			if (--width)				c = getc(stream);		}		while (width && isdigit(c)) {			digit_seen++;			*bufp++ = c;			if (--width)				c = getc(stream);		}		if (!digit_seen) {			if (width && c != EOF) ungetc(c,stream);			return inp_buf - 1;		}	}	if (width && c != EOF) ungetc(c, stream);	*bufp = '\0';	return bufp - 1;}#endif	/* NOFLOAT *//* * the routine that does the scanning  */int_doscan(register FILE *stream, const char *format, va_list ap){	int		done = 0;	/* number of items done */	int		nrchars = 0;	/* number of characters read */	int		conv = 0;	/* # of conversions */	int		base;		/* conversion base */	unsigned long	val;		/* an integer value */	register char	*str;		/* temporary pointer */	char		*tmp_string;	/* ditto */	unsigned	width = 0;	/* width of field */	int		flags;		/* some flags */	int		reverse;	/* reverse the checking in [...] */	int		kind;	register int	ic = EOF;	/* the input character */#ifndef	NOFLOAT	long double	ld_val;#endif	if (!*format) return 0;	while (1) {		if (isspace(*format)) {			while (isspace(*format))				format++;	/* skip whitespace */			ic = getc(stream);			nrchars++;			while (isspace (ic)) {				ic = getc(stream);				nrchars++;			}			if (ic != EOF) ungetc(ic,stream);			nrchars--;		}		if (!*format) break;	/* end of format */		if (*format != '%') {			ic = getc(stream);			nrchars++;			if (ic != *format++) break;	/* error */			continue;		}		format++;		if (*format == '%') {			ic = getc(stream);			nrchars++;			if (ic == '%') {				format++;				continue;			}			else break;		}		flags = 0;		if (*format == '*') {			format++;			flags |= FL_NOASSIGN;		}		if (isdigit (*format)) {			flags |= FL_WIDTHSPEC;			for (width = 0; isdigit (*format);)				width = width * 10 + *format++ - '0';		}		switch (*format) {		case 'h': flags |= FL_SHORT; format++; break;		case 'l': flags |= FL_LONG; format++; break;		case 'L': flags |= FL_LONGDOUBLE; format++; break;		}		kind = *format;		if ((kind != 'c') && (kind != '[') && (kind != 'n')) {			do {				ic = getc(stream);				nrchars++;			} while (isspace(ic));			if (ic == EOF) break;		/* outer while */		} else if (kind != 'n') {		/* %c or %[ */			ic = getc(stream);			if (ic == EOF) break;		/* outer while */			nrchars++;		}		switch (kind) {		default:			/* not recognized, like %q */			return conv || (ic != EOF) ? done : EOF;			break;		case 'n':			if (!(flags & FL_NOASSIGN)) {	/* silly, though */				if (flags & FL_SHORT)					*va_arg(ap, short *) = (short) nrchars;				else if (flags & FL_LONG)					*va_arg(ap, long *) = (long) nrchars;				else					*va_arg(ap, int *) = (int) nrchars;			}			break;		case 'p':		/* pointer */			set_pointer(flags);			/* fallthrough */		case 'b':		/* binary */		case 'd':		/* decimal */		case 'i':		/* general integer */		case 'o':		/* octal */		case 'u':		/* unsigned */		case 'x':		/* hexadecimal */		case 'X':		/* ditto */			if (!(flags & FL_WIDTHSPEC) || width > NUMLEN)				width = NUMLEN;			if (!width) return done;			str = o_collect(ic, stream, kind, width, &base);			if (str < inp_buf			    || (str == inp_buf				    && (*str == '-'					|| *str == '+'))) return done;			/*			 * Although the length of the number is str-inp_buf+1			 * we don't add the 1 since we counted it already			 */			nrchars += str - inp_buf;			if (!(flags & FL_NOASSIGN)) {				if (kind == 'd' || kind == 'i')				    val = strtol(inp_buf, &tmp_string, base);				else				    val = strtoul(inp_buf, &tmp_string, base);				if (flags & FL_LONG)					*va_arg(ap, unsigned long *) = (unsigned long) val;				else if (flags & FL_SHORT)					*va_arg(ap, unsigned short *) = (unsigned short) val;				else					*va_arg(ap, unsigned *) = (unsigned) val;			}			break;		case 'c':			if (!(flags & FL_WIDTHSPEC))				width = 1;			if (!(flags & FL_NOASSIGN))				str = va_arg(ap, char *);			if (!width) return done;			while (width && ic != EOF) {				if (!(flags & FL_NOASSIGN))					*str++ = (char) ic;				if (--width) {					ic = getc(stream);					nrchars++;				}			}			if (width) {				if (ic != EOF) ungetc(ic,stream);				nrchars--;			}			break;		case 's':			if (!(flags & FL_WIDTHSPEC))				width = 0xffff;			if (!(flags & FL_NOASSIGN))				str = va_arg(ap, char *);			if (!width) return done;			while (width && ic != EOF && !isspace(ic)) {				if (!(flags & FL_NOASSIGN))					*str++ = (char) ic;				if (--width) {					ic = getc(stream);					nrchars++;				}			}			/* terminate the string */			if (!(flags & FL_NOASSIGN))				*str = '\0';				if (width) {				if (ic != EOF) ungetc(ic,stream);				nrchars--;			}			break;		case '[':			if (!(flags & FL_WIDTHSPEC))				width = 0xffff;			if (!width) return done;			if ( *++format == '^' ) {				reverse = 1;				format++;			} else				reverse = 0;			for (str = Xtable; str < &Xtable[NR_CHARS]							; str++)				*str = 0;			if (*format == ']') Xtable[*format++] = 1;			while (*format && *format != ']') {				Xtable[*format++] = 1;				if (*format == '-') {					format++;					if (*format					    && *format != ']'					    && *(format) >= *(format -2)) {						int c;						for( c = *(format -2) + 1						    ; c <= *format ; c++)							Xtable[c] = 1;						format++;					}					else Xtable['-'] = 1;				}			}			if (!*format) return done;						if (!(Xtable[ic] ^ reverse)) {			/* MAT 8/9/96 no match must return character */				ungetc(ic, stream);				return done;			}			if (!(flags & FL_NOASSIGN))				str = va_arg(ap, char *);			do {				if (!(flags & FL_NOASSIGN))					*str++ = (char) ic;				if (--width) {					ic = getc(stream);					nrchars++;				}			} while (width && ic != EOF && (Xtable[ic] ^ reverse));			if (width) {				if (ic != EOF) ungetc(ic, stream);				nrchars--;			}			if (!(flags & FL_NOASSIGN)) {	/* terminate string */				*str = '\0';				}			break;#ifndef	NOFLOAT		case 'e':		case 'E':		case 'f':		case 'g':		case 'G':			if (!(flags & FL_WIDTHSPEC) || width > NUMLEN)				width = NUMLEN;			if (!width) return done;			str = f_collect(ic, stream, width);			if (str < inp_buf			    || (str == inp_buf				&& (*str == '-'				    || *str == '+'))) return done;			/*			 * Although the length of the number is str-inp_buf+1			 * we don't add the 1 since we counted it already			 */			nrchars += str - inp_buf;			if (!(flags & FL_NOASSIGN)) {				ld_val = strtod(inp_buf, &tmp_string);				if (flags & FL_LONGDOUBLE)					*va_arg(ap, long double *) = (long double) ld_val;				else				    if (flags & FL_LONG)					*va_arg(ap, double *) = (double) ld_val;				else					*va_arg(ap, float *) = (float) ld_val;			}			break;#endif		}		/* end switch */		conv++;		if (!(flags & FL_NOASSIGN) && kind != 'n') done++;		format++;	}	return conv || (ic != EOF) ? done : EOF;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲黄色录像片| 精品久久国产97色综合| 免费在线成人网| 国产精品天天摸av网| 成人精品高清在线| 国产一区免费电影| 日本女人一区二区三区| 亚洲制服欧美中文字幕中文字幕| 精品国产一区二区三区久久影院 | 五月天视频一区| 亚洲视频精选在线| 亚洲国产成人自拍| 久久久久久久久久久99999| 欧美一二三区在线| 欧美日本在线播放| 精品婷婷伊人一区三区三| 在线视频观看一区| 色综合中文字幕| 国产成人亚洲精品狼色在线 | 天堂蜜桃一区二区三区| 亚洲精品国产品国语在线app| 亚洲欧美日韩国产另类专区| 欧美激情一区在线| 久久久久久99久久久精品网站| 欧美大胆人体bbbb| 91精品欧美综合在线观看最新| 欧美日韩一区二区三区不卡 | 国产精品不卡在线| 中文字幕一区日韩精品欧美| 国产亚洲一本大道中文在线| 久久久久久夜精品精品免费| 欧美成人免费网站| 久久精品一区蜜桃臀影院| 日本一区二区综合亚洲| 亚洲摸摸操操av| 国产欧美日韩另类一区| 国产日产欧美一区| 中文字幕字幕中文在线中不卡视频| 国产偷v国产偷v亚洲高清 | 美女视频黄 久久| 国产精品自拍网站| www.欧美色图| 欧美色电影在线| 日韩精品一区二| 中文一区二区在线观看| 一区二区三区资源| 日本最新不卡在线| 久久不见久久见免费视频1| 丁香一区二区三区| 欧美在线观看视频在线| 日韩三级精品电影久久久| 久久久久久久久久美女| 亚洲视频一区二区在线| 日本不卡视频在线观看| 成人中文字幕合集| 在线观看免费一区| 欧美不卡一区二区三区| 国产欧美一区二区精品性| 亚洲激情六月丁香| 男女男精品视频| 97国产精品videossex| 欧美精三区欧美精三区| 国产精品久久看| 捆绑调教一区二区三区| 91首页免费视频| 精品少妇一区二区| 国产精品妹子av| 久久国产尿小便嘘嘘尿| 欧美体内she精高潮| 国产精品乱码一区二区三区软件 | 亚洲欧美一区二区三区国产精品| 亚洲成人激情av| av电影在线观看一区| 欧美一级理论片| 亚洲一区二区三区激情| 成人毛片在线观看| 亚洲精品一区二区三区精华液| 一区二区不卡在线播放 | 麻豆传媒一区二区三区| 91蜜桃免费观看视频| 久久久久国产精品厨房| 秋霞av亚洲一区二区三| 日本韩国一区二区三区视频| 久久久精品综合| 肉丝袜脚交视频一区二区| 91福利国产精品| 18欧美亚洲精品| 成人av网站在线观看| 久久久五月婷婷| 日韩国产在线观看一区| 欧美日韩一区三区| 一二三区精品视频| 在线观看日韩精品| 亚洲综合精品久久| 91捆绑美女网站| 亚洲欧美电影院| 久久精品久久精品| 欧美tk—视频vk| 国产做a爰片久久毛片| 欧美成人性战久久| 久久成人免费网| 欧美va天堂va视频va在线| 韩日精品视频一区| 久久久久久久综合| 国产又黄又大久久| 久久久久久久久蜜桃| 国产精品538一区二区在线| 国产嫩草影院久久久久| 国产麻豆一精品一av一免费| 精品免费视频一区二区| 国产麻豆精品视频| 日韩午夜电影在线观看| 蜜桃久久av一区| 久久综合九色综合97婷婷女人| 精品在线播放免费| 国产日韩影视精品| 色拍拍在线精品视频8848| 亚洲h在线观看| 欧美sm美女调教| 成人综合婷婷国产精品久久| 亚洲欧美偷拍卡通变态| 欧美日韩一区二区三区视频| 捆绑紧缚一区二区三区视频| 久久色视频免费观看| 91一区在线观看| 亚洲1区2区3区视频| 久久精子c满五个校花| 国产精品久久久一区麻豆最新章节| 在线观看亚洲a| 亚洲一区av在线| 91精品国产综合久久久久久久 | 日韩免费高清电影| 国产成人av电影| 91麻豆蜜桃一区二区三区| 一区二区三区欧美| 亚洲国产成人午夜在线一区| 欧美一区二区三区视频免费| 在线观看亚洲一区| 99久久99久久久精品齐齐| 国产又粗又猛又爽又黄91精品| 亚洲.国产.中文慕字在线| 亚洲欧洲www| 国产精品视频观看| 久久天天做天天爱综合色| 日韩欧美一区二区久久婷婷| 在线精品视频一区二区三四| 国产在线国偷精品免费看| 亚洲www啪成人一区二区麻豆| 国产欧美日韩亚州综合| 久久久精品人体av艺术| 欧美一区二区三区四区五区| 成人精品视频一区二区三区| 精品一区二区三区在线观看 | 91福利视频网站| 丰满白嫩尤物一区二区| 日韩不卡手机在线v区| 亚洲国产三级在线| 国产精品卡一卡二| 久久免费精品国产久精品久久久久| 欧美日韩在线亚洲一区蜜芽| 欧美最新大片在线看 | 亚洲欧洲精品天堂一级 | 国产午夜精品一区二区三区四区| 欧美日韩一区 二区 三区 久久精品 | 肉肉av福利一精品导航| 一区二区三区视频在线看| 国产精品国产自产拍在线| 成人免费小视频| 亚洲欧美在线aaa| 亚洲色图.com| 日韩毛片精品高清免费| 亚洲一区二区三区视频在线播放| 亚洲精品高清在线观看| 综合色中文字幕| 亚洲另类一区二区| 五月综合激情日本mⅴ| 亚洲影院久久精品| 性做久久久久久| 亚洲bdsm女犯bdsm网站| 久久不见久久见免费视频7| 韩国一区二区三区| 国产精品一品二品| 国产69精品久久久久毛片| 91国偷自产一区二区三区观看| 成年人国产精品| 91亚洲精品久久久蜜桃| 9i在线看片成人免费| 欧美日韩午夜在线| 欧美一区二区三级| 欧美大白屁股肥臀xxxxxx| 久久久久久久久久久久久久久99 | 在线中文字幕一区| 欧美色老头old∨ideo| 欧美一二三区精品| 中文字幕在线观看不卡视频| 一区二区三区在线视频免费观看| 亚洲一区二区三区小说| 久久国产成人午夜av影院| 色综合激情久久| 欧美精品v国产精品v日韩精品 |