0

我只是想将函数get_string中的copywords传递给main中的fileinput。

编译器在引用第 5 行(即 main 的第一行)时在函数 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;放在 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;  // (*)
}

您的代码显示其他错误,例如重新声明copywords,返回指针(指向无效的内存区域)而不是char. 简而言之,您的代码将无法编译,即使您努力使其可编译,也可能无法执行您想要的操作。

于 2012-12-17T20:08:03.540 回答