0

私は自分の作品をコンパイルしていますが、コードをどのように編集してもこのエラーが表示され続けました:

expected expression before ‘char’

format ‘%s’ expects type ‘char *’, but argument 2 has type ‘int’

2 番目のエラーの時点で、型キャストを使用しようとしましたが、問題は本当に永続的です。誰も方法を知っていますか?これは私のコードの一部です:

while ( char my_wget (char web_address[BUFLEN]) != EOF ) {
    printf ("%s", (char) web_address[BUFLEN]);
4

3 に答える 3

2

あなたが書いた場所に構文エラーがあり、char許可charされていないためです。

たぶん、あなたは念頭に置いていました:

int ch;
char web_address[BUFLEN];

while ((ch = my_wget(web_address)) != EOF)
    printf("%s\n", web_address);

aroundの正しい宣言my_wget()( などextern int my_wget(char *buffer);) を使用すると、コンパイルする必要があります。どこでも変数を宣言することはできません。

2 番目のエラーはweb_address[BUFLEN]文字であるためです (確かに私のコードでは、コンパイラがエラーを生成するのに十分な型を識別できたため、あなたのコードにもあるようです)。私が行ったように宣言した場合、それは配列の末尾を超えたものでもあります。char値 (おそらく 8 ビットの量) をアドレス (ポインタ; おそらく 32 ビットまたは 64 ビットの量) として扱うのは間違っているため、コンパイラは文句を言いました。

于 2013-03-12T05:23:48.017 に答える
1

printf()ステートメントで、部分charを変更してみてください 同じループ内char* の条件に適用されます。前をにwhile変更charweb_address(char*)

"char"あなたが前に書いているのはおかしいと思いますmy_wget()。もっと具体的にお願いできますか?

于 2013-03-12T05:23:39.797 に答える