0

テキスト ファイルの数値を配列にロードするプログラムを作成しようとしています。テキストファイルは「数字」と呼ばれ、数字は次の形式になっています: 3,49,52,40,34 など.

プログラムを実行しようとすると、「プログラムが応答していません」というエラーが表示されます。誰かが私が間違っていることを指摘してもらえますか? どうもありがとう。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 32

int main (void) {

    FILE* fp;
    fp = fopen ("numbers.txt", "r");
    if (fp == NULL)
        puts ("No data in file");
        return 0;

    int n = 0;
    int i = 0;
    int j = 0;
    int a[MAX];

    while (fscanf(fp, "%d, ", &n) > 0) {
        a[i++] = n;
    }

    fclose (fp);

    printf ("Data loaded");

    for (j = 0; j < MAX; j++) {
        printf ("%d", a[j++]);
        printf ("THE END");
    }
    return 0;
}
4

2 に答える 2

2

ブラケットを次のif状態にします。

FILE* fp;
fp = fopen ("numbers.txt", "r");
if (fp == NULL)
{
    puts ("No data in file");
    return 0;
}
于 2013-03-28T20:16:55.870 に答える
1
if (fp == NULL)
    puts ("No data in file");
    return 0;

と同じ:

if (fp == NULL)
    puts ("No data in file");
return 0; //returned already

あなたのプログラムは、ファイルから読み取らずにすでに戻っています。

やったほうがいい

if (fp == NULL)
{  
    puts ("No data in file");
    return 0; 
}
于 2013-03-28T20:17:58.313 に答える