コード例 #1
0
ファイル: libfile.c プロジェクト: codernator/creepy-garbanzo
long fread_flag(FILE *fp)
{
	int number;
	char c;
	bool negative = false;

	do
		c = (char)getc(fp);
	while (isspace((int)c));

	if (c == '-') {
		negative = true;
		c = (char)getc(fp);
	}

	number = 0;

	if (!isdigit((int)c)) {
		while (('A' <= c && c <= 'Z') || ('a' <= c && c <= 'z')) {
			number += flag_convert(c);
			c = (char)getc(fp);
		}
	}

	while (isdigit((int)c)) {
		number = number * 10 + (int)c - (int)'0';
		c = (char)getc(fp);
	}

	if (c == '|')
		number += fread_flag(fp);
	else if (c != ' ')
		ungetc(c, fp);

	if (negative)
		return -1 * number;

	return number;
}
コード例 #2
0
ファイル: dbase.c プロジェクト: KodersCo/hayalevi
long fread_flag(FILE *fp) {
	int number = 0;
	char c;
	bool negative= FALSE;

	do {
		c = getc(fp);
	} while (isspace(c));

	if (c == '-') {
		negative = TRUE;
		c = getc(fp);
	}

	if (!isdigit(c)) {
		while (('A' <= c && c <= 'Z') || ('a' <= c && c <= 'z')) {
			number += flag_convert(c);
			c = getc(fp);
		}
	}

	while (isdigit(c)) {
		number = number * 10 + c - '0';
		c = getc(fp);
	}

	if (c == '|')
		number += fread_flag(fp);
	else if (c != ' ')
		ungetc(c, fp);

	if (negative)
		return -1 * number;

	return number;
}