我在循环中找不到以下错误语法:c

时间:2018-12-21 11:20:04

标签: c

我有一个练习要求我纠正语法错误,我试图纠正,但是每次我要编译时,都会在for循环中显示错误。

(该练习允许计数并显示用户输入的句子中的元音字母的数量,用户通过键入“ *”指示输入的结尾)

#include <stdio.h>
main(){
char c;
char TV[5];
int k;
for (k = 0; k < 5; k++)
 {
 TV[k]=0;
  }
 printf("Entrer un texte. Tapez le caractére * pour sortire. \n");
 c = getchar();
while(c!='*')
{
  switch (c) {
     case 'A': TV[0]++;
     case 'a': TV[0]++;
     case 'E': TV[1]++;
     case 'e': TV[1]++;
     case 'I': TV[2]++;
     case 'i': TV[2]++;
     case 'O': TV[3]++;
     case 'o': TV[3]++;
     case 'U': TV[4]++;
     case 'u': TV[4]++;
    default: c = getchar();

   }
 }
 printf("a \t e \t i \t o \t u \n");
 for(k=0;k<5;k++)
 {
  printf("%d \t",TV[k]);
 }
 }

错误消息:

mariem@MIGI:~/Bureau/syt_exp$ gcc Tp6-lesChaines-Exercice1.c
Tp6-Channels-Exercise1.c:2:1: warning: return type defaults to ‘int’ [-Wreturn-type]
 main(){
 ^~~~
mariem@MIGI:~/Bureau/syt_exp$ ./Tp6-lesChaines-Exercice1.c
./Tp6-Channels-Exercise1.c: line 6: syntax error near the unexpected symbol "("
./Tp6-Channels-Exercise1.c: line 6: `for (k = 0; k <5; k ++) '

我认为现在更好了。

4 个答案:

答案 0 :(得分:2)

我没有看到语法错误。而且我无法复制代码以与我的编译器一起检查。但是:

main应该声明为

int main(int argc, char **argv)

您的循环:while (c=='*')?您的意思是while (c!='*')

并且:case应该以{{1​​}}终止,否则执行将继续。

答案 1 :(得分:1)

为什么没有声明main()的类型?

int main()

答案 2 :(得分:1)

您正在尝试直接在Shell中执行C源文件,就像它是Shell脚本一样。需要编译C,然后执行由编译器创建的文件。

GCC生成的默认名称为a.out,因此请使用./a.out

执行

答案 3 :(得分:0)

几件事...

1-修复警告-surveyHash应该为main(){甚至int main(){都可以,但是返回类型void main(){是这里的最标准。输入参数是可选的-即argv / argc。

2-编译后(您做得正确),没有指定可执行文件名称,编译器生成的默认.exe是inta.out。要运行,请在命令行上键入a.exe

注意-通过执行这两项操作,我已经确认程序可以运行。