error: expected expression before ‘char’
error: expected expression before ‘char’
对不起,我在编译代码时遇到问题,我不知道如何解决它,因为我不知道它要求什么。
这出现在我的终端:
" usr/lib/gcc/x86_64-linux-gnu/4.9/../../../x86_64-linux-gnu/crt1.o: 在函数 _start':
/build/buildd/glibc-2.21/csu/../sysdeps/x86_64/start.S:114: reference to
main' 中没有定义
collect2:错误:ld 返回 1 退出状态
"
我留下我的密码:
#include<stdio.h>
#include<string.h>
void calcular_vocal(char cadena[]){
int l;
char vocales[5]="a,e,i,o,u";
int i, vector contadores[5];
l=strlen(cadena);
for(i=0;i<l;i++){
if(cadena[i] =='a')
cadena a++;
vector contadores[0]++;
if(cadena[i] =='e')
cadena e++;
vector contadores[1]++;;
if(cadena[i] == 'i')
cadena i++;
vector contadores[2]++;
if(cadena[i] =='o')
cadena o++;
vector contadores[3]++;
if(cadena[i] =='u')
cadena u++;
vector contadores[4]++;
for(i=0;i<5;i++){
int max,pos;
if(vector contadores[i]>max){
max = vector contadores [i];
pos = i;
}
}
printf("The most repeated vocal is %c %d",vocales[pos],max);
}
}
int main (void){
char calcular_vocal(char[]);
}
更新
看来你编译的文件有误。请参阅以下控制台命令和输出(它是德语,但我认为该消息与您的非常相似):
$ rm test1.c
$ touch test1.c
$ gcc test1.c
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crt1.o: In Funktion `_start':
(.text+0x20): Nicht definierter Verweis auf `main'
collect2: error: ld returned 1 exit status
$
长话短说:您编译了错误的文件(可能是一个空文件),因此您收到此错误消息,这与您的任何代码都完全无关。
原答案
我将对您的代码进行一些假设,以便为您提供一个生成可编译代码的答案 - 运行 程序的结果是否意味着任何事情都取决于您(老实说,我有意建议的更改不会为您提供您最可能想要的程序,因为您需要学习一些东西)。
我从你的主要功能开始
int main (void){
char calcular_vocal(char[]);
}
您在 main 函数中所做的是编写 calcular_vocal
函数的声明,但函数签名与您的实际实现不同。将其更改为 void calcular_vocal(char[]);
以使该部分可编译。
现在到 calcular_vocal
函数中的代码:
行 char vocales[5]="a,e,i,o,u";
是不允许的,因为字符串对于您的数组来说太大了。将数组大小增加到 9 或 10 以获得足够的 space 可用:char vocales[9] = "a,e,i,o,u";
转到第 int i, vector contadores[5];
行,假设您想要一个名为 "vector contadores" 的变量。您的变量名中不能包含 space,因此将所有出现的变量重命名为 "vector_contadores" 以使本文有效。
继续讨论所有 if-statements。它们都是一样的,所以我只写第一个。代码 cadena a++;
无效。你有多种选择来解决这个问题。 (1) 从该代码 (cadena++;
) 中删除 a
。 (2) 为 a
定义整数变量并从代码 (a++;
) 中删除 cadena
。 (3)改写为cadena['a']++;
。还有更多选项可以使这部分可编译。
变量int max,pos;
在for-loop内部定义,但在外部使用。将它们的定义移动到函数的顶部,您可以在其中定义其他变量。另外,用值 -1
.
初始化 max
这应该是编译这段代码所需的全部内容(除非我忘记了什么)
对不起,我在编译代码时遇到问题,我不知道如何解决它,因为我不知道它要求什么。
这出现在我的终端:
" usr/lib/gcc/x86_64-linux-gnu/4.9/../../../x86_64-linux-gnu/crt1.o: 在函数 _start':
/build/buildd/glibc-2.21/csu/../sysdeps/x86_64/start.S:114: reference to
main' 中没有定义
collect2:错误:ld 返回 1 退出状态
"
我留下我的密码:
#include<stdio.h>
#include<string.h>
void calcular_vocal(char cadena[]){
int l;
char vocales[5]="a,e,i,o,u";
int i, vector contadores[5];
l=strlen(cadena);
for(i=0;i<l;i++){
if(cadena[i] =='a')
cadena a++;
vector contadores[0]++;
if(cadena[i] =='e')
cadena e++;
vector contadores[1]++;;
if(cadena[i] == 'i')
cadena i++;
vector contadores[2]++;
if(cadena[i] =='o')
cadena o++;
vector contadores[3]++;
if(cadena[i] =='u')
cadena u++;
vector contadores[4]++;
for(i=0;i<5;i++){
int max,pos;
if(vector contadores[i]>max){
max = vector contadores [i];
pos = i;
}
}
printf("The most repeated vocal is %c %d",vocales[pos],max);
}
}
int main (void){
char calcular_vocal(char[]);
}
更新
看来你编译的文件有误。请参阅以下控制台命令和输出(它是德语,但我认为该消息与您的非常相似):
$ rm test1.c
$ touch test1.c
$ gcc test1.c
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crt1.o: In Funktion `_start':
(.text+0x20): Nicht definierter Verweis auf `main'
collect2: error: ld returned 1 exit status
$
长话短说:您编译了错误的文件(可能是一个空文件),因此您收到此错误消息,这与您的任何代码都完全无关。
原答案
我将对您的代码进行一些假设,以便为您提供一个生成可编译代码的答案 - 运行 程序的结果是否意味着任何事情都取决于您(老实说,我有意建议的更改不会为您提供您最可能想要的程序,因为您需要学习一些东西)。
我从你的主要功能开始
int main (void){
char calcular_vocal(char[]);
}
您在 main 函数中所做的是编写 calcular_vocal
函数的声明,但函数签名与您的实际实现不同。将其更改为 void calcular_vocal(char[]);
以使该部分可编译。
现在到 calcular_vocal
函数中的代码:
行 char vocales[5]="a,e,i,o,u";
是不允许的,因为字符串对于您的数组来说太大了。将数组大小增加到 9 或 10 以获得足够的 space 可用:char vocales[9] = "a,e,i,o,u";
转到第 int i, vector contadores[5];
行,假设您想要一个名为 "vector contadores" 的变量。您的变量名中不能包含 space,因此将所有出现的变量重命名为 "vector_contadores" 以使本文有效。
继续讨论所有 if-statements。它们都是一样的,所以我只写第一个。代码 cadena a++;
无效。你有多种选择来解决这个问题。 (1) 从该代码 (cadena++;
) 中删除 a
。 (2) 为 a
定义整数变量并从代码 (a++;
) 中删除 cadena
。 (3)改写为cadena['a']++;
。还有更多选项可以使这部分可编译。
变量int max,pos;
在for-loop内部定义,但在外部使用。将它们的定义移动到函数的顶部,您可以在其中定义其他变量。另外,用值 -1
.
max
这应该是编译这段代码所需的全部内容(除非我忘记了什么)