gpt4 book ai didi

c - 错误: expected expression before ‘char’

转载 作者:行者123 更新时间:2023-11-30 19:40:46 24 4
gpt4 key购买 nike

对不起,我在编译代码时遇到问题,但我不知道如何解决它,因为我不知道它要求什么。

这出现在终端中:

"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:引用
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[]);
}

您在主函数中所做的就是编写 calcular_vocal 函数的声明,但函数签名与实际实现不同。将其更改为 void calular_vocal(char[]); 以使该部分可编译。

现在看一下 calcular_vocal 函数内的代码:

不允许使用 charvocales[5]="a,e,i,o,u"; 行,因为字符串大小对于数组来说太大。将数组大小增加到 9 或 10,以便有足够的可用空间:charvocales[9] = "a,e,i,o,u";

转到行 int i, vector contadores[5];,假设您想要一个名为“vector contadores”的变量。变量名称中不能有空格,因此请将所有出现的变量重命名为“vector_contadores”,以使该部分正常工作。

继续讨论所有 if 语句。它们都是一样的,所以我只写第一个。代码 cadena a++; 无效。您有多种选择来解决这个问题。 (1) 删除该代码中的 a (cadena++;)。 (2) 为a 定义整型变量,并从代码中删除cadena (a++;)。 (3) 重写为cadena['a']++;。还有更多选项可以使这部分可编译。

变量int max,pos;在for循环内部定义,但在外部使用。将它们的定义移至函数的顶部,您可以在其中定义其他变量。另外,用值 -1 初始化 max

这应该是编译这段代码所需的全部内容(除非我忘记了什么)

关于c - 错误: expected expression before ‘char’ ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34967286/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com