繁体   English   中英

C fscanf读取字符或整数

[英]C fscanf read character or integer

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

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

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

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

char *endptr;

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

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

// Check the errno for errors
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);

我一直在搞乱,发现这样的事情可能起作用:

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
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM