我是C编程的新手,我得到一个THREAD 1:EXC_BAD_ACCESS(代码= 1,地址0x68) 当我运行我的程序。我的代码的目的是从包含正数和负数的txt文件中读取并对其执行某些操作。
#include <stdio.h>
int main (int argc, const char * argv[]) {
FILE *file = fopen("data.txt", "r");
int array[100];
int i = 0;
int num;
while( fscanf(file, "%d" , &num) == 1) { // I RECEIVE THE ERROR HERE
array[i] = num;
printf("%d", array[i]);
i++;
}
fclose(file);
for(int j = 0; j < sizeof(array); j++){
printf("%d", array[j]);
}
}
答案 0 :(得分:3)
之后
FILE *file = fopen("data.txt", "r");
说
if(file == 0) {
perror("fopen");
exit(1);
}
只是猜测,其余的代码看起来还不错,所以这很可能就是问题。
答案 1 :(得分:1)
另外值得注意的是,您的文件中可能包含超过100个数字,在这种情况下,您将超过数组的大小。尝试使用以下代码替换while循环:
for (int i = 0; i < 100 && ( fscanf(file, "%d" , &num) == 1); ++i)
{
array[i] = num;
printf("%d", array[i]);
}
答案 2 :(得分:0)
您是否创建了“data.txt”文件并且是本地的?
touch data.txt
echo 111 222 333 444 555 > data.txt
检查您的文件是否已成功打开。
这是一个工作版本,
#include <stdio.h>
#include <stdlib.h> //for exit
int main (int argc, const char * argv[])
{
FILE *fh; //reminder that you have a file handle, not a file name
if( ! (fh= fopen("data.txt", "r") ) )
{
printf("open %s failed\n", "data.txt"); exit(1);
}
int array[100];
int idx = 0; //never use 'i', too hard to find
int num;
while( fscanf(fh, "%d" , &num) == 1) { // I RECEIVE THE ERROR HERE
array[idx] = num;
printf("%d,", array[idx]);
idx++;
}
printf("\n");
fclose(fh);
//you only have idx numbers (0..idx-1)
int jdx;
for(jdx = 0; jdx<idx; jdx++)
{
printf("%d,", array[jdx]);
}
printf("\n");
}