如何从文本文件中读取 min/max 个变量?

How to read min/max variables from a text file?

我希望能够设置 min/max 范围并在从文件中读取值时使用它来检查 valid/invalid 输入。

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

1 10
2 
4
5

在这个程序中,我想使用fscanf(stdin , ...):

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

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

要读取文件,您可以这样做 -

 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 
   }

在程序中硬编码文件名:

#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;
}