0

fscanf を使用してテキスト ファイルから文字と整数を読み取る必要がありますが、次の値が文字になるか整数になるかわかりません。どうすれば次のようなことができますか

if(next_is_character)
    fscanf(file, "%c", &mycharacter);
else
    fscanf(file, "%d", &myinteger);
4

3 に答える 3

1
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);
于 2012-11-06T11:59:12.817 に答える
1

すべてを c-string として読み取り、strtolを使用して検証します。

strtol文字列を整数に変換できない場合は、文字です。それ以外の場合は整数です。

char *endptr;

fscanf(fp, "%s", str);

myInteger = strtol(str, &endptr, 10);

// Check the errno for errors
于 2012-11-06T12:12:54.450 に答える
0

私はいじっていましたが、次のようなものがうまくいくことがわかりました:

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
}
于 2012-11-06T12:22:22.567 に答える