fgetc省略字符然后分配整数

时间:2013-05-24 15:14:15

标签: c file-io fgetc

我有一个文件data.dat

HI5 LO2

我想从中读取5和2,并将它们存储为uint16s。我写过

#include <stdio.h>
int main()
{
    unsigned short int high;
    FILE *pFile;
    pFile = fopen("data.dat", "r");
    int c;
    while(c != 'I')
    {
        c = fgetc(pFile);
    }
    high = while(c != ' ')
    {
        c = fgetc(pFile);
    }
    printf("%i\n", high);
    if(c == ' '){puts("we read until 1st line space");}
    else{puts("we didn't read until 1st line space");}
    fclose(pFile);
    return 0;
}

高分配给while循环,因为我们可能得到更大的数字,如10,但这样做会产生错误。我如何从文本文件中的值分配整数?

1 个答案:

答案 0 :(得分:1)

改为使用fscanf()

unsigned short i[2];
/* fscanf() returns number of successful assignments made,
   which must be 2 in this case. */
if (fscanf(pFile, "HI%hu LO%hu", &i[0], &i[1]) == 2)
{
}

如果文件有多行,请使用fgets()逐行读取,并使用sscanf()从每行中提取整数值。

总是检查IO操作的结果,例如fopen()没有返回NULL