如何从文本文件中读取最小/最大变量?

时间:2015-09-16 16:24:52

标签: c file-io input io scanf

我希望能够设置最小/最大范围,并在读取文件中的值时使用它来检查有效/无效输入。

第一行中的最小值和最大值分别为 1 10 。这是我要测试的文本文件( num.txt ):

1 10
2 
4
5

在此计划中,我想使用fscanf(stdin , ...)

fscanf( stdin, "%d%c", &num, &c );    

如何读取第一行并检查最小值和最大值,然后继续阅读以下行?

2 个答案:

答案 0 :(得分:3)

要从文件中读取,您可以执行此操作 -

 FILE *fp;
 fp=fopen("num.txt","r");              // check its return .
 fscanf(fp,"%d %d",&min,&max);

要继续阅读更多值,您可以在循环中使用fscanf -

while(fscanf(fp,"%d",&variable)==1){  // on success fscanf return 1 here, till fscanf is successful loop will iterate
   // do you operations 
   }

答案 1 :(得分:2)

在程序中硬编码文件名:

#include <stdio.h>

int main(int argc, char**argv)
{
    int min, max;

    FILE *fp;
    fp = fopen( "num.txt", "r");

    if( fscanf( fp,"%d %d", &min, &max) != 2) // Read Min/MAX from file
        return -1; // wrong input file

    int val;
    while( fscanf( fp, "%d", &val) == 1 ) //check if new values in range
        if(val<min || val>max)
            printf( "Invalid INPUT: Value %d is not in (%d, %d) range", val, min, max);

    fclose( fp);
    return 0;
} 

使用控制台shell的输入重定向

#include <stdio.h>

int main(int argc, char**argv)
{
    int min, max;

    if( fscanf( stdin,"%d %d", &min, &max) != 2) // Read Min/MAX from file
        return -1; // wrong input file

    int val;
    while( fscanf( stdin, "%d", &val) == 1 ) //check if new values in range
        if(val<min || val>max)
            printf( "Invalid INPUT: Value %d is not in (%d, %d) range", val, min, max);

    return 0;
}