如何使用fgets读取包含字符串和整数的文件

时间:2017-02-09 21:46:36

标签: c fgets

我注意到fscanf无法使用确定的C编译器(Intel,Cray),因此我想使用fgets来读取包含字符串和整数的简单输入文件

$cat input.txt
st 10 167 POP 456 244 NONE ENERGY

我可以做这样的事情

int main()
{
    FILE *ptr_file;
    char buf[1000];

    ptr_file = fopen("input.txt", "r");
    if (!ptr_file)
        return 1;

    for (int i = 0; i < 8; i++) {
        fgets(buf, 1000, ptr_file);
        printf("%s", buf);
    }

    fclose(ptr_file);
    return 0;
}

阅读该文件,然后创建switch case以将buf的值存储在integerstring中。这显然效率不高,我想知道是否有人有更好的想法。

1 个答案:

答案 0 :(得分:1)

考虑使用sscanf,基本上是这样的

     // st 10 167 POP 456 244 NONE ENERGY
     sscanf(buf, "%s %d %d %s %d %d %s %s", var1, &var2....);