我希望能够设置最小/最大范围,并在读取文件中的值时使用它来检查有效/无效输入。
第一行中的最小值和最大值分别为 1 和 10 。这是我要测试的文本文件( num.txt ):
1 10
2
4
5
在此计划中,我想使用fscanf(stdin , ...)
:
fscanf( stdin, "%d%c", &num, &c );
如何读取第一行并检查最小值和最大值,然后继续阅读以下行?
答案 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;
}