0

そのため、ファイル名を引数として取り、ファイルを読み取って配列に格納する C コードを作成しようとしています。私は試しましたが、叙事詩的に失敗しました:(

誰でも私を正しい方向に向けることができますか? これが私が思いついたものです(完全に軌道から外れている可能性があることはわかっています:/)

#include <stdio.h>

int main (int argc, char *argv[]) {
   char content[500];
   int k=0;
   FILE* inputF;
   inputF = fopen("argv[0]", "r");

   do {
       fscanf(inputF, "%c", &content[k]);
       k++;
   } while (content[k] != EOF ); 

return 0;
}
4

2 に答える 2

3

"argv[0]"に文字列を渡しfopenました。開こうとしているファイルの名前ではないはずです。

ファイル名を含む文字列へのポインターを渡す必要があります。

inputF = fopen(argv[1], "r");


argv[1]not の使用法にも注意してくださいargv[0]

argv[0]実行可能ファイルの完全なファイルパスと名前、およびargv[1]コマンド ライン パラメータとして入力された最初の文字列が含まれます。

于 2013-03-07T23:45:13.177 に答える
1

開始に役立ついくつかのポイント:

argcは引数の数で、最初のargvポインターは実行可能ファイルの名前です。2番目はあなたが望むものです。

ファイル ポインタを使用する前に、そのポインタが有効であることを確認する必要があります。

各文字を読み取るために使用fgetcして、EOFをテストすることを検討してください。

contentバッファをオーバーランしていないことを確認する必要があります。

行き詰まっている場合は、do while を使用したメイン ループの例を次に示します。

do {
    ch = fgetc(fp);
    content[a] = ch;
    a++;
} while (ch != EOF && a < 500);

これにより、EOF (見つかった場合) が配列に格納されます。

于 2013-03-07T23:49:57.793 に答える