gpt4 book ai didi

c - 为什么 printf 在我的 while 循环后不打印任何东西

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

这是我的代码

#include <stdio.h>
#include <stdlib.h>
int main ()
{
int x = 0;
int y = 0;
float a[5][2]; //array
float b[3][2]; //array
float c[2][2]; //array
FILE *fr;
//int c;
float power;
char unit[5];
//int N; //Number of sensors
float TI; //Time interval
//char M; //Midpoint
//char T; //Trapezoid
//int SR; //Sample Rate
fr = fopen("sensor_0.txt","r");
/*fr = fopen("sensor_1.txt","r");
fr = fopen("sensor_2.txt","r");
*/
//----------------------------------------------------------------------------------------------------------------------------
printf("The contents of %s file are :\n", "sensor_0.txt");
while ( !feof( fr ) )
{


fscanf(fr, "%f %f %s",&TI, &power, unit);

//printf("%f, %f \n", TI,power); //print
a[x][y] = TI;
a[x][++y]= power;
x++;
y = 0;

}
fclose(fr);
//----------------------------------------------------------------------------------------------------------------------------

printf("%s", "hello");

return 0;
}

为什么我的字符串在 while 循环后没有打印出任何东西?如果我取消注释 while 循环内的同一行,它会正确打印。我也试过只添加简单的 printf("hello") 但在 while 循环之后似乎没有任何效果。

编辑 - 次要格式。

output should just be
700 25.18752608 mW
710 26.83002734 mW
720 26.85955414 mW
730 23.63045233 mW

最佳答案

我怀疑文件有 5 行,而不是 4 行。

您对 !feof() 的测试失败了,因为您在尝试读取第 6 行时尚未到达文件末尾。 fscanf 失败但您未测试返回值。因此,您将 TIpower 存储在二维数组的末尾之外,从而调用未定义的行为。

以这种方式更改加载代码应该可以解决问题:

while (x < 5 && fscanf(fr, "%f %f %4s", &TI, &power, unit) == 3) {
a[x][0] = TI;
a[x][1] = power;
x++;
}
if (x != 5) {
printf("incomplete input\n");
}

关于c - 为什么 printf 在我的 while 循环后不打印任何东西,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34056134/

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