fscanf を使用してテキスト ファイルから文字と整数を読み取る必要がありますが、次の値が文字になるか整数になるかわかりません。どうすれば次のようなことができますか
if(next_is_character)
fscanf(file, "%c", &mycharacter);
else
fscanf(file, "%d", &myinteger);
fscanf を使用してテキスト ファイルから文字と整数を読み取る必要がありますが、次の値が文字になるか整数になるかわかりません。どうすれば次のようなことができますか
if(next_is_character)
fscanf(file, "%c", &mycharacter);
else
fscanf(file, "%d", &myinteger);
while(fscanf(fp,"%c",&charvar))
{
if(isalpha(charvar))
{
//it is character
}
if(isdigit(charvar))
{
//it is integer
}
}
この機能を使用できます
#include <ctype.h>
int isalnum(int c);
int isalpha(int c);
int isascii(int c);
int isblank(int c);
int iscntrl(int c);
int isdigit(int c);
int isgraph(int c);
int islower(int c);
int isprint(int c);
int ispunct(int c);
int isspace(int c);
int isupper(int c);
int isxdigit(int c);
すべてを c-string として読み取り、strtolを使用して検証します。
strtol
文字列を整数に変換できない場合は、文字です。それ以外の場合は整数です。
char *endptr;
fscanf(fp, "%s", str);
myInteger = strtol(str, &endptr, 10);
// Check the errno for errors
私はいじっていましたが、次のようなものがうまくいくことがわかりました:
fpos_t position;
fgetpos (fp, &position);
char isCharacter;
fscanf(fp, "%c", &isCharacter);
if(isalpha(isCharacter))
{
//it is character
}
else
{
fsetpos(fp, &position);
// integer, read it
}