不好意思,我在编译代码的时候遇到了一个问题,我不知道怎么解决,因为我不知道它的要求是什么。
这似乎我在终端:
”usr/lib/gcc/x86_64-linux-gnu/4.9/../../../x86_64-linux-gnu/crt1.o:在没有定义collect 2的函数_start': /build/buildd/glibc-2.21/csu/../sysdeps/x86_64/start.S:114: reference to
main'中:错误: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[]);
}
1条答案
按热度按时间sulc1iza1#
更新
看起来你编译错了文件。查看下面的控制台命令和输出(它是德语,但我认为消息与你的非常相似):
长话短说:你编译了错误的文件(可能是一个空文件),因此你得到了这个错误消息,它与你的任何代码都完全无关。
原始答案
我将对你的代码做一些假设,以便为你提供一个可编译代码的答案--运行程序的结果是否意味着什么取决于你(老实说,我故意建议的更改不会给予你最可能想要的程序,因为你需要一些东西来学习)。
我从你的主要功能开始
你在main函数中所做的,是写一个
calcular_vocal
函数的声明,但是使用了与你实际实现不同的函数签名。为了使这部分可编译,把它改为void calcular_vocal(char[]);
。下面是
calcular_vocal
函数内部的代码:不允许使用行
char vocales[5]="a,e,i,o,u";
,因为字符串大小对于您的数组太大。请将数组大小增加到9或10,以便有足够的可用空间:char vocales[9] = "a,e,i,o,u";
移动到
int i, vector contadores[5];
行,假设你想有一个名为“vector contadores”的变量。你不能在变量名中有空格,所以为了使这部分工作,所有情况下都将其重命名为“vector_contadores”。接下来是所有的if语句,它们都是一样的所以我只写了关于第一个的东西。代码
cadena a++;
是无效的。你有多个选择来解决这个问题。(1)从该代码中删除a
(cadena++;
).(2)为a
定义整数变量,并从代码(a++;
)中删除cadena
.(3)重写为cadena['a']++;
.还有更多的选项可以使这部分可编译。变量
int max,pos;
在for循环内部定义,但在外部使用。将它们的定义移动到函数的顶部,在那里定义其他变量。另外,使用值-1
初始化max
。这应该是编译这段代码所需要的全部内容(除非我忘记了什么)