gpt4 book ai didi

c - 使用 fscanf 读取两行整数

转载 作者:太空宇宙 更新时间:2023-11-04 04:41:19 25 4
gpt4 key购买 nike

我想问一些我用C写的东西。

我使用 fopen() 命令打开并读取一个仅包含两行的文本文件。在第一行是N个整数,第二行是第一行说的N个整数。

例如。

-------------- nubmers.txt --------------
8 <-- we want 8 numbers for the 2nd line
16 8 96 46 8 213 5 16 <-- and we have 8 numbers! :)

但我想在文件打开时进行限制。

数字 N 应该在 1 ≤ N ≤ 1.000.000 之间。如果没有,则显示一条错误消息。如果文件没问题,那么程序会继续运行另一个代码。

这是我到目前为止所做的:

int num;

....

   fscanf(fp,"%d",&num);                                                    // here goes the fscanf() command
if(num<1 || num>1000000) // set restrictions to integer
{
printf("The number must be 1<= N <= 1.000.000",strerror(errno)); // error with the integer number
getchar(); // wait the user press a key
return 0; // returning an int of 0, exit the program
}
else // if everything works.....
{
printf("work until now"); // Everything works until now! :)
getchar(); // wait the user press a key
return 0; // returning an int of 0, exit the program
}

但问题是限制只检查第一行数字,虽然它是正确的,但不要读取第二行中的数字。

我的意思是:假设我在第一行有数字 10。该代码将分析数字,检查限制并继续进行“其他”部分

else                                                                // if everything works.....
{
printf("work until now"); // Everything works until now! :)
getchar(); // wait the user press a key
return 0; // returning an int of 0, exit the program
}

..它会说一切正常。但是,如果我在第二行中有 20 数字怎么办? -当我只需要 10

例如。

-------------- nubmers.txt --------------
10
16 8 96 46 8 213 5 16 8 9 21 5 69 64 58 10 1 7 3 6

所以我希望尽可能地清楚。我的问题是我需要程序中的代码,除了第一个限制外,在第一个限制下还有另一个限制,它将读取带有数字的 txt 文件的第二行,并检查是否有与第一行一样多的数字线说!

我该怎么做?如果你们想要任何其他声明,请随时询问!希望我清楚我的问题:)

最佳答案

这将检查整数的数量并报告太多或不够。除了每个被读入 value 之外,整数不会被保存。你想存储每个整数吗?

fscanf(fp,"%d",&num); // here goes the fscanf() command                                                                   
if(num<1 || num>1000000) // set restrictions to integer
{
printf("The number must be 1<= N <= 1.000.000",strerror(errno)); // error with the integer number
getchar(); // wait the user press a key
return 0; // returning an int of 0, exit the program
}
else // if everything works.....
{
int i = 0;
int value = 0;
while ( fscanf ( fp, "%d", &value) == 1) { // read one integer
i++; // this loop will continue until EOF or non-integer input
}
if ( i > num) {
printf ( "too many integers\n");
}
if ( i < num) {
printf ( "not enough integers\n");
}
getchar(); // wait the user press a key
return 0; // returning an int of 0, exit the program
}

关于c - 使用 fscanf 读取两行整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26202398/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com