1

こんにちは、私は独学で C を学んでおり、K & R の本を読んでいますが、問題が発生しています (OS X を実行しています)。これはセクション 1.5.1「ファイルのコピー」からのもので、文字を入力として受け取り、その文字を出力することになっています。コードは次のとおりです。

#include <stdio.h>

/* --  Copy input to output -- */ 
int main(void)
{
int c;

c = getchar();

while ( c != EOF ) {
    putchar(c);
    c = getchar;
}


}

だから、私の問題はコード自体ではなく、コンパイルと実行にあると思います。まず、コンパイル時に次のエラーが発生します

/Volumes/Goliath/Dropbox/C programs/prog1_5_1.c: In function ‘main’:
/Volumes/Goliath/Dropbox/C programs/prog1_5_1.c:12: warning: assignment makes integer from pointer without a        cast
/Volumes/Goliath/Dropbox/C programs/prog1_5_1.c:16: warning: control reaches end of non-void function

次に、出力ファイルを(ターミナルで)実行すると、小さなスペースがあり、文字を入力すると、次のように入力します

a

それから私はリターンを押します

そして、新しい行を取得します。次に新しいキーを押すと、画面があちこちにクエスチョン マークでおかしくなり始めます。

私がよく理解しているかどうかはわかりませんが、これは奇妙な問題だと思います。事前にどうもありがとうございました

4

3 に答える 3

5

2 番目の割り当ては ですc = getchar();。括弧を省略すると、getchar関数のアドレスが に割り当てられますがc、これは望んでいるものではありません。

また、最後に、「コントロールが非無効関数の終わりに到達する」という警告を取り除くためにmain、行などが必要です。return 0;

于 2011-05-09T01:58:08.790 に答える
2

12 行目の getchar で () を忘れました。括弧なしでは、"getchar" は関数のアドレスに評価されるため、pointer-cast-to-int 警告が表示されます。

于 2011-05-09T02:00:56.610 に答える
1

2 番目の後に括弧がありませんgetchar

これは、メソッドのメモリ内の場所を変数 に割り当てていることを意味します。変数cと等しくならないため、無限ループが発生しEOFます。

于 2011-05-09T01:57:44.690 に答える