我只是试图将函数get_string中的copywords传递给main中的fileinput。
编译器在函数get_string中引用错误,同时引用第5行作为main的第一行。
#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);
}
答案 0 :(得分:2)
get_string()
之前的main()
原型中缺少分号。
char get_string (char * copywords[100]);
^
|
IMPORTANT
这导致函数定义嵌套,这是不允许的。
答案 1 :(得分:1)
在声明get_string
之后你没有分号,所以编译器不知道声明结束了,当它看到来自int
的{{1}}时,它感到困惑,因为int main
在函数声明的参数列表之后是不合法的。
PS:你的主要功能也没有右括号,但这是一个不同的问题。
答案 2 :(得分:0)
如果您使用的工具或编辑器为您缩进代码,您将会看到一些奇怪的东西。您错过了;
,这就是原因。然后,您将;
置于可能}
的位置,因此存在不平衡{
。不要低估它对你和任何读者有用的缩进和呈现代码的有用程度。
#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
。简而言之,您的代码将无法编译,即使您努力使其可编辑,也可能无法满足您的需求。