C fscanf读取字符或整数

时间:2012-11-06 11:52:09

标签: c

我需要使用fscanf从文本文件中读取字符和整数,但我不知道下一个值是字符还是整数。我该怎么做

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

3 个答案:

答案 0 :(得分:0)

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);

答案 1 :(得分:0)

以c字符串的形式阅读所有内容并使用 strtol 进行验证。

如果strtol无法将字符串转换为整数,那么它就是字符。否则,它是一个整数。

char *endptr;

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

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

// Check the errno for errors

答案 2 :(得分: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
}