我需要使用fscanf从文本文件中读取字符和整数,但我不知道下一个值是字符还是整数。我该怎么做
if(next_is_character)
fscanf(file, "%c", &mycharacter);
else
fscanf(file, "%d", &myinteger);
答案 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
}