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 回答