0

関数 get_string から main の fileinput にコピーワードを渡そうとしています。

main の最初の行である行 5 を参照しているときに、コンパイラは関数 get_string でエラーを言います。

#include <stdio.h>
#include <stdlib.h>

char get_string (char * copywords[100])
int main (){
char fileinput[100];
get_string(fileinput[100]);
;


char get_string (char * copywords[100]) {
FILE *fp;
int c;
char copywords[100];
fp = fopen("gues20.txt", "r");
if (fp == NULL)
exit(1);
else {
while(fgets(copywords , 100, fp) == EOF){
}
fclose(fp);
}
return (copywords);
}
4

3 に答える 3

2

get_string()のプロトタイプの の直前にセミコロンがありませんmain()

char get_string (char * copywords[100]);
                                       ^
                                       |
                                   IMPORTANT

これにより、関数定義がネストされますが、これは許可されていません。

于 2012-12-17T17:43:02.253 に答える
1

の宣言の後にセミコロンがget_stringないため、コンパイラは宣言が終了したことを認識せず、intfromを見ると、関数宣言のパラメーター リストの後に正当ではないint mainため、混乱します。int

PS: メイン関数にも閉じ括弧がありませんが、それは別の問題です。

于 2012-12-17T17:43:57.730 に答える
0

コードをインデントするツールやエディターを使用すると、何かおかしいことが一目でわかります。あなたには a が;ありません。それが理由です。次に、;あるはずの場所に を配置する}と、 のバランスが崩れ{ます。適切にインデントされて提示されたコードが、あなたや読者にとってどれほど役立つかを過小評価しないでください。

#include <stdio.h>
#include <stdlib.h>

char get_string (char * copywords[100]);

int main (){
    char fileinput[100];
    get_string(fileinput[100]);
}


char get_string (char * copywords[100]) {
    FILE *fp;
    int c;
    char copywords[100];  // redeclared
    fp = fopen("gues20.txt", "r");
    if (fp == NULL)
        exit(1);
    else {
        while(fgets(copywords , 100, fp) == EOF) ; // ??
        fclose(fp);
    }
    return copywords;  // (*)
}

あなたのコードは、 の再宣言copywordschar. 簡単に言えば、コードはコンパイルされず、コンパイル可能にしようとしても、期待どおりに動作しない可能性があります。

于 2012-12-17T20:08:03.540 に答える