2

整数でこれを行う方法を理解したので、文字列で試してみることにし、行き詰まりました。

これが私のファイル「kw」の内容です。

keyword0
keyword1
keyword2
keyword3

この現在のコードでは、「エラー:フォーマット'%s'はタイプ'char *'の引数を期待していますが、引数3のタイプは'char**'です。

#include <stdio.h>

int main () {
    FILE *pFile;

    pFile = fopen("kw", "r");

    if (pFile != NULL) {

        char *a[3];
        int i;

        for(i = 0; i <= 3; i++) {
            fscanf(pFile, "%s", &a[i]);
            printf("%s\n", a[i]);
        }
    }
    return 0;
}

誰かが私をここで正しい方向に向けることができますか?ありがとうございました。

4

1 に答える 1

2

このコードにはいくつかの問題があります。

  • a配列には3つの要素しかないのに対し、配列の4つの要素を調べています。
  • で読み取っている文字列にスペースを割り当てていませんscanf
  • 文字列を読み取るときに、アドレスのアドレスを渡さないでください。

最初の問題を修正するには、次のようにまたはに変更<=します。!=<

for(i = 0; i != 3; i++)

2番目と3番目の問題を修正するには、次を使用しますmalloc

a[i] = malloc(21*sizeof(char));
fscanf(pFile, "%20s", a[i]);

割り当てたデータが完成したら、文字列を解放することを忘れないでください。

for(i = 0; i != 3; i++) {
    free(a[i]);
}
于 2012-10-02T03:05:40.637 に答える