【发布时间】:2017-11-06 10:00:07
【问题描述】:
我的任务是编写一个从 txt 文件数组中读取数字并找到最大值、最小值、总和等的代码。(200)个数字采用以下格式: 3.23 19.398 98.73 2.1 ... 抱歉,如果代码有点乱,我一直在尝试拼凑很多不同的教程,但无济于事。我基本上需要知道如何让代码按顺序读取值,并提取最大值/最小值并继续遍历数组。 (并一路找到总和)如何正确格式化?
# include <stdio.h>
int main()
{
//char data[200];
int newnum;
int max = 0, min = 99999999999;
int i = 0;
int y[200];
//min=max=newnum;
FILE *fpdata = fopen("data.txt", "r");
if((fpdata = fopen("data.txt", "r")) == 0)
{
printf("File not found. Abort!");
exit(-1);
}
while(fscanf(fpdata,"%f", &y[i++]) != EOF);{
//for(i=0; i < 200; i++)
i--;
printf("i=%d \n", i);
//printf("\n%d%d\n", &y[i++], y);
if(newnum > max)
max = newnum;
if(newnum < min)
min = newnum;
}
printf("The largest number is %d\n", max);
printf("The smallest number is %d\n", min);
fclose(fpdata);
return 0;
}
任何帮助将不胜感激,我已经尝试利用所有可能的资源(youtube、其他 stackoverflow 问题)几个小时,但没有明确说明如何从文件中格式化调用数组、读取并从中提取值.
【问题讨论】:
-
FILE *fpdata = fopen("input1.txt", "r");->FILE *fpdata; -
EOF);{-->EOF){(即去掉;) -
你永远不会给
newnum分配任何东西。可能只是将&y[i++]替换为&newnum。 -
您扫描
int但格式看起来好像文件包含浮点数 -
为什么不在读入时检查每个值的最大值/最小值,而不是尝试用那个讨厌的 while() 循环来读取它们,然后在之后迭代数组?尽量不要写那样的代码——调试单行复杂的语句/表达式非常困难,(更不用说难以理解)。
标签: c arrays file-io io format