如何在C中使用fscanf从文本文件中仅读取数字

时间:2019-04-28 05:59:44

标签: c

对于我的程序的一部分,我必须从一个名为“ options.txt”的文本文件中获取信息。该文件是这样的:

Team number 10
win point 2
draw point 1
lose point -1

我写了这段代码,但它只用零填充了选项数组:

int options[4];
getOptions(){
    FILE *filePtr;
    if((filePtr=fopen("options.txt","r"))==NULL){
        puts("file could not be opened");
    } else {
        for(i=0;i<4;i++) {
            fscanf(filePtr, "%d", &options[i] );
        }
    const int teamNumber=ayarlar[0]; //first element of the array is teamNumber
    struct teams team[teamNumber]; // teamNumber necessary for teams
}

1 个答案:

答案 0 :(得分:2)

您可以使用scanf("%*[^-0-9]");扫描并丢弃所有不是数字或-的字符。因此,循环如下:

    for(i=0;i<4;i++) {
        fscanf(filePtr, "%*[-0-9]");
        if (fscanf(filePtr, "%d", &options[i] ) != 1)
            fprintf(stderr, "error reading file");
    }

请注意,在使用任何结果值之前,应始终检查scanf的返回值,以确保成功读取和转换它们。