【发布时间】:2018-04-17 20:21:11
【问题描述】:
我是 C 编程的新手,我正在尝试编写代码以从文件中读取少量整数到一维数组中。其中整数是在一个月内提供给主要城市的数百万加仑水的数量,而月数是循环中的计数器变量。每次我尝试运行程序并且其他尝试时它都不会运行,说“线程1:EXC_BAD_ACCESS(代码= 1,地址= 0x68)”。 这是数据: 123 134 122 128 111 110 98 99 78 98 100 120 122 110 111 123 134 122 128 111 110 98 99 78 98 100 120 122 110 111
提前谢谢你。
#include <stdio.h>
#define size 50
int main()
{
int monthly_water_arr[size];
int num_months;
FILE *water;
water=fopen("water.data.txt","r");
for(num_months=0;num_months<size;num_months++)
{
fscanf(water,"%d",&monthly_water_arr[num_months]);
}
printf("the number of months is %d\n",num_months);
fclose(water);
return(0);
}
【问题讨论】:
-
你应该经常检查
fopen()的返回值,不要以为它成功了。 -
"每次我尝试运行程序,但其他尝试都不会运行" --> 当程序出现问题并使用
fscanf()和家庭时,一个非常好的第一个调试步骤是对fscanf().和fopen()的返回值进行检查。也许:if (fscanf( water, "%d", &monthly_water_arr[num_months]) != 1) {puts("Error"); exit(-1);} -
在你的 for 循环中避免将数据直接放入数组中,直到你确认它正确读取和打印数据......分而治之问题的经典案例......确保一旦确认读取可以,然后直接存储到数组中,但这不是最初的方法
标签: c