1

私はより熟達し、C プログラミングをしようとしています。文字を取得しているループ内で、入力ストリームから文字を表示することをテストしようとしていました。getcharメソッドを使用しています。

printfコード内のステートメントが存在するときに例外がスローされます。(この関数の行をコメントアウトするprintfと、例外はスローされません)。

例外: firstOS.exe の 0x611c91ad (msvcr90d.dll) で未処理の例外: 0xC0000005: アクセス違反の読み取り場所 0x00002573。

これがコードです...何か考えはありますか?ありがとうございました。

PS。図書館を利用していstdio.hます。

/*getCommandPromptNew - obtains a string command prompt.*/
void getCommandPromptNew(char s[], int lim){    

    int i, c;

    for(i=0; i < lim-1 && (c=getchar())!=EOF && c!='\n'; ++i){
        s[i] = c;
        printf('%s', c);
    }

}

4

2 に答える 2

4

変更してみてください:

printf('%s', c);

printf("%c", c);

ループの最後に文字列全体を出力したい場合は、次のようにNULLcharで終了する必要があります。

s[i] = 0;

そして、次のように印刷できます。

printf("%s", s);
于 2010-03-21T04:20:22.017 に答える
1

最初に確認する必要があるのは、s[] にメモリを割り当てているかどうかです。
2番目: printf("%c", c); // %s が null で終了する文字列を待っていると推測できます。
3 番目: printf() の "" と '' に問題がある可能性があります。

于 2010-03-21T04:24:35.813 に答える