0

C プログラミングは初めてで、プログラムを実行すると THREAD 1: EXC_BAD_ACCESS(code = 1, address 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]);
    }
}
4

3 に答える 3

3

FILE *file = fopen("data.txt", "r");

言う

if(file == 0) {
    perror("fopen");
    exit(1);
}

推測ですが、コードの残りの部分は問題ないように見えるので、おそらくこれが問題です。

于 2013-10-03T00:04:12.467 に答える
1

また、ファイルに 100 を超える数値が含まれている可能性があることにも注意してください。その場合、配列のサイズを超えてしまいます。while ループを次のコードに置き換えてみてください。

for (int i = 0; i < 100 && ( fscanf(file, "%d" , &num) == 1); ++i)
{
    array[i] = num;
    printf("%d", array[i]);
}
于 2013-10-03T00:09:01.900 に答える
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");
}
于 2013-10-03T02:33:55.043 に答える