C switch 语句中的编译错误
C Compiling error in switch statement
我正在用 C 编程,我遇到了一些我没想到的错误,但我很清楚。这个想法是创建一个带有 switch 语句的菜单,以通过用户输入调用函数。我在函数中没有发现任何错误,但我得到了这个:
“‘}’标记前的预期声明
}"
还有这个:
"case label ‘14’ not within a switch statement",对于 switch 语句中的每个标签都会重复此错误。我检查了括号,它们都是用开括号和闭括号完成的。
我使用 sublime-text 2.0 作为我的编辑器和生成器,Linux 作为我的 OS
int main(){
char string[TMAXSTR], string2[TMAXSTR];
int option, ch;
for(option=0, ch=0;option<15;){
printf("Escolha uma opção:\n1 - Strconcat (concatenacao de strings)\n2 - Capicua\n3 - Strcmp (Comparacao de Strings)\n4 - Stricmp (transforma caratares em minusculas e compara)\n5 - Strdelc (apaga um determinado caracter)\n6 - Trimright (apaga espaços em branco a direita\n7 - Trimleft (apaga espaços a esquerda\n8 - Trimmiddle (apaga espaços no meio\n9 - Inverter (inverte uma string)\n10 - Findchar (devolve o numero de vezes que um determinado carater aparece na string\n11 - IndiceChar (devolve a posicao de um determinado carater\n12 - Maisculas (Converte a string em maiusculas\n13 - Minusculas (converte a string em minusculas)\n14 - Strstr\n15 - Sair");
switch(option){
case 1:puts("Introduza a primeira string: "); gets(string);
puts("Introduza a segunda string: "); gets(string2);
printf("%s",strconcat(string, string2);break;
case 2:puts("Introduza a string: "); gets(string);
if(capi(string))
puts("E capicua");break;
else
puts("Nao capicua");break;
case 3:puts("Introduza a primeira string: "); gets(string);
puts("Introduza a segunda string: "); gets(string2);
if(strcmp(string, string2)==0)
puts("Sao iguais");break;
else
puts("Sao diferentes");break;
case 4:puts("Introduza a primeira string: "); gets(string);
puts("Introduza a segunda string: "); gets(string2);
if(stricmp(string, string2)==0){
puts("Sao iguais");break;
else
puts("Sao diferentes");break;
}
case 5:puts("Introduza a string: "); gets(string);
puts("Introduza o carater a verificar: "); scanf(" %c",&ch);
printf("A string sem o carater é: %s",strdelc(string,ch));break;
case 6:puts("Introduza a string: "); gets(string);
printf("A nova string é: %s", trimright(string));break;
case 7:puts("Introduza a string: "); gets(string);
printf("A nova string é: %s", trimleft(string));break;
case 8: puts("Introduza a string: "); gets(string);
printf("A nova string é: %s", trimmiddle(string));break;
case 9:puts("Introduza a string: "); gets(string);
printf("A string invertida é: %s", meuinverter(string));break;
case 10:puts("Introduza a string: "); gets(string);
printf("O carater aparece: %dx", findchar(string, ch));break;
case 11:puts("Introduza a string: "); gets(string);
puts("Introduza o carater: "); scanf(" %c",&ch);
printf("O indice do carater é: %d", indchr(string,ch));break;
case 12:puts("Introduza a string: "); gets(string);
printf("A string em maisculas é: %s", mas(string));break;
case 13:puts("Introduza a string: "); gets(string);
printf("A string em minusculas é: %s", min(string));break;
case 14:puts("Introduza a string: "); gets(string);
puts("Introduza a segunda string: "); gets(string2);
printf("%s", mystrstr(string,string2));break;
default: puts("Invalido");break;
}
}
return 0;}
这是有问题的代码(其他地方缺少大括号):
if(stricmp(string, string2)==0){
puts("Sao iguais");break;
else
puts("Sao diferentes");break;
}
您应该将每个 if-else 多语句块放在大括号内,如下所示:
if(stricmp(string, string2)==0){
puts("Sao iguais");break;
} else {
puts("Sao diferentes");break;
}
点 1> 在 case 1:
printf("%s",strconcat(string, string2);break;
您缺少 )
printf()
。
点 2 > 在 case 4:
if(stricmp(string, string2)==0){
puts("Sao iguais");break;
else
puts("Sao diferentes");break;
}
{ }
不匹配。你不需要那样的。也许你想要的是
if(stricmp(string, string2)==0)
{
puts("Sao iguais");
break;
}
else
{
puts("Sao diferentes");
break;
}
或者,更好的是,
if(stricmp(string, string2)==0)
puts("Sao iguais");
else
puts("Sao diferentes");
break;
这个 if
块有一些错位的花括号:
if(stricmp(string, string2)==0){
puts("Sao iguais");break;
else
puts("Sao diferentes");break;
}
您可能想将其更改为
if(stricmp(string, string2)==0){
puts("Sao iguais");
}
else {
puts("Sao diferentes");
}
break;
更新:
还有一些其他情况误用了 if
块(例如情况 3) , 比如:
if(strcmp(string, string2)==0)
puts("Sao iguais");break;
else
puts("Sao diferentes");break;
这里 if
和 else 块应该放在 {}
中。或者将 break
移动到 if/else
语句之后。
你忘记了情况 4 中的大括号。
您的代码:
if(stricmp(string, string2)==0){
puts("Sao iguais");break;
else
puts("Sao diferentes");break;
}
你的代码完全错误..你错过了一些括号,这个程序将无法运行,你必须调整一些东西..
无论如何,正确的编译代码是:
#include<stdio.h>
#include<stdlib.h>
#define TMAXSTR 500
int main(){
char string[TMAXSTR], string2[TMAXSTR];
int option, ch;
for(option=0;ch=0;option<15){
printf("Escolha uma opção:\n1 - Strconcat (concatenacao de strings)\n2 - Capicua\n3 - Strcmp (Comparacao de Strings)\n4 - Stricmp (transforma caratares em minusculas e compara)\n5 - Strdelc (apaga um determinado caracter)\n6 - Trimright (apaga espaços em branco a direita\n7 - Trimleft (apaga espaços a esquerda\n8 - Trimmiddle (apaga espaços no meio\n9 - Inverter (inverte uma string)\n10 - Findchar (devolve o numero de vezes que um determinado carater aparece na string\n11 - IndiceChar (devolve a posicao de um determinado carater\n12 - Maisculas (Converte a string em maiusculas\n13 - Minusculas (converte a string em minusculas)\n14 - Strstr\n15 - Sair");
switch(option){
case 1:
puts("Introduza a primeira string: "); gets(string);
puts("Introduza a segunda string: "); gets(string2);
printf("%s",strconcat(string, string2));
break;
case 2:puts("Introduza a string: "); gets(string);
if(capi(string)){
puts("E capicua");
break;
}
else{
puts("Nao capicua");
break;
}
case 3:puts("Introduza a primeira string: "); gets(string);
puts("Introduza a segunda string: "); gets(string2);
if(strcmp(string, string2)==0){
puts("Sao iguais");break;}
else{
puts("Sao diferentes");break;}
case 4:puts("Introduza a primeira string: "); gets(string);
puts("Introduza a segunda string: "); gets(string2);
if(stricmp(string, string2)==0){
puts("Sao iguais");break;}
else{
puts("Sao diferentes");break;
}
case 5:puts("Introduza a string: "); gets(string);
puts("Introduza o carater a verificar: "); scanf(" %c",&ch);
printf("A string sem o carater é: %s",strdelc(string,ch));break;
case 6:puts("Introduza a string: "); gets(string);
printf("A nova string é: %s", trimright(string));break;
case 7:puts("Introduza a string: "); gets(string);
printf("A nova string é: %s", trimleft(string));break;
case 8: puts("Introduza a string: "); gets(string);
printf("A nova string é: %s", trimmiddle(string));break;
case 9:puts("Introduza a string: "); gets(string);
printf("A string invertida é: %s", meuinverter(string));break;
case 10:puts("Introduza a string: "); gets(string);
printf("O carater aparece: %dx", findchar(string, ch));break;
case 11:puts("Introduza a string: "); gets(string);
puts("Introduza o carater: "); scanf(" %c",&ch);
printf("O indice do carater é: %d", indchr(string,ch));break;
case 12:puts("Introduza a string: "); gets(string);
printf("A string em maisculas é: %s", mas(string));break;
case 13:puts("Introduza a string: "); gets(string);
printf("A string em minusculas é: %s", min(string));break;
case 14:puts("Introduza a string: "); gets(string);
puts("Introduza a segunda string: "); gets(string2);
printf("%s", mystrstr(string,string2));break;
default: puts("Invalido");break;
}
}
return 0;}
我正在用 C 编程,我遇到了一些我没想到的错误,但我很清楚。这个想法是创建一个带有 switch 语句的菜单,以通过用户输入调用函数。我在函数中没有发现任何错误,但我得到了这个:
“‘}’标记前的预期声明 }"
还有这个:
"case label ‘14’ not within a switch statement",对于 switch 语句中的每个标签都会重复此错误。我检查了括号,它们都是用开括号和闭括号完成的。
我使用 sublime-text 2.0 作为我的编辑器和生成器,Linux 作为我的 OS
int main(){
char string[TMAXSTR], string2[TMAXSTR];
int option, ch;
for(option=0, ch=0;option<15;){
printf("Escolha uma opção:\n1 - Strconcat (concatenacao de strings)\n2 - Capicua\n3 - Strcmp (Comparacao de Strings)\n4 - Stricmp (transforma caratares em minusculas e compara)\n5 - Strdelc (apaga um determinado caracter)\n6 - Trimright (apaga espaços em branco a direita\n7 - Trimleft (apaga espaços a esquerda\n8 - Trimmiddle (apaga espaços no meio\n9 - Inverter (inverte uma string)\n10 - Findchar (devolve o numero de vezes que um determinado carater aparece na string\n11 - IndiceChar (devolve a posicao de um determinado carater\n12 - Maisculas (Converte a string em maiusculas\n13 - Minusculas (converte a string em minusculas)\n14 - Strstr\n15 - Sair");
switch(option){
case 1:puts("Introduza a primeira string: "); gets(string);
puts("Introduza a segunda string: "); gets(string2);
printf("%s",strconcat(string, string2);break;
case 2:puts("Introduza a string: "); gets(string);
if(capi(string))
puts("E capicua");break;
else
puts("Nao capicua");break;
case 3:puts("Introduza a primeira string: "); gets(string);
puts("Introduza a segunda string: "); gets(string2);
if(strcmp(string, string2)==0)
puts("Sao iguais");break;
else
puts("Sao diferentes");break;
case 4:puts("Introduza a primeira string: "); gets(string);
puts("Introduza a segunda string: "); gets(string2);
if(stricmp(string, string2)==0){
puts("Sao iguais");break;
else
puts("Sao diferentes");break;
}
case 5:puts("Introduza a string: "); gets(string);
puts("Introduza o carater a verificar: "); scanf(" %c",&ch);
printf("A string sem o carater é: %s",strdelc(string,ch));break;
case 6:puts("Introduza a string: "); gets(string);
printf("A nova string é: %s", trimright(string));break;
case 7:puts("Introduza a string: "); gets(string);
printf("A nova string é: %s", trimleft(string));break;
case 8: puts("Introduza a string: "); gets(string);
printf("A nova string é: %s", trimmiddle(string));break;
case 9:puts("Introduza a string: "); gets(string);
printf("A string invertida é: %s", meuinverter(string));break;
case 10:puts("Introduza a string: "); gets(string);
printf("O carater aparece: %dx", findchar(string, ch));break;
case 11:puts("Introduza a string: "); gets(string);
puts("Introduza o carater: "); scanf(" %c",&ch);
printf("O indice do carater é: %d", indchr(string,ch));break;
case 12:puts("Introduza a string: "); gets(string);
printf("A string em maisculas é: %s", mas(string));break;
case 13:puts("Introduza a string: "); gets(string);
printf("A string em minusculas é: %s", min(string));break;
case 14:puts("Introduza a string: "); gets(string);
puts("Introduza a segunda string: "); gets(string2);
printf("%s", mystrstr(string,string2));break;
default: puts("Invalido");break;
}
}
return 0;}
这是有问题的代码(其他地方缺少大括号):
if(stricmp(string, string2)==0){
puts("Sao iguais");break;
else
puts("Sao diferentes");break;
}
您应该将每个 if-else 多语句块放在大括号内,如下所示:
if(stricmp(string, string2)==0){
puts("Sao iguais");break;
} else {
puts("Sao diferentes");break;
}
点 1> 在 case 1:
printf("%s",strconcat(string, string2);break;
您缺少 )
printf()
。
点 2 > 在 case 4:
if(stricmp(string, string2)==0){
puts("Sao iguais");break;
else
puts("Sao diferentes");break;
}
{ }
不匹配。你不需要那样的。也许你想要的是
if(stricmp(string, string2)==0)
{
puts("Sao iguais");
break;
}
else
{
puts("Sao diferentes");
break;
}
或者,更好的是,
if(stricmp(string, string2)==0)
puts("Sao iguais");
else
puts("Sao diferentes");
break;
这个 if
块有一些错位的花括号:
if(stricmp(string, string2)==0){
puts("Sao iguais");break;
else
puts("Sao diferentes");break;
}
您可能想将其更改为
if(stricmp(string, string2)==0){
puts("Sao iguais");
}
else {
puts("Sao diferentes");
}
break;
更新:
还有一些其他情况误用了 if
块(例如情况 3) , 比如:
if(strcmp(string, string2)==0)
puts("Sao iguais");break;
else
puts("Sao diferentes");break;
这里 if
和 else 块应该放在 {}
中。或者将 break
移动到 if/else
语句之后。
你忘记了情况 4 中的大括号。
您的代码:
if(stricmp(string, string2)==0){
puts("Sao iguais");break;
else
puts("Sao diferentes");break;
}
你的代码完全错误..你错过了一些括号,这个程序将无法运行,你必须调整一些东西.. 无论如何,正确的编译代码是:
#include<stdio.h>
#include<stdlib.h>
#define TMAXSTR 500
int main(){
char string[TMAXSTR], string2[TMAXSTR];
int option, ch;
for(option=0;ch=0;option<15){
printf("Escolha uma opção:\n1 - Strconcat (concatenacao de strings)\n2 - Capicua\n3 - Strcmp (Comparacao de Strings)\n4 - Stricmp (transforma caratares em minusculas e compara)\n5 - Strdelc (apaga um determinado caracter)\n6 - Trimright (apaga espaços em branco a direita\n7 - Trimleft (apaga espaços a esquerda\n8 - Trimmiddle (apaga espaços no meio\n9 - Inverter (inverte uma string)\n10 - Findchar (devolve o numero de vezes que um determinado carater aparece na string\n11 - IndiceChar (devolve a posicao de um determinado carater\n12 - Maisculas (Converte a string em maiusculas\n13 - Minusculas (converte a string em minusculas)\n14 - Strstr\n15 - Sair");
switch(option){
case 1:
puts("Introduza a primeira string: "); gets(string);
puts("Introduza a segunda string: "); gets(string2);
printf("%s",strconcat(string, string2));
break;
case 2:puts("Introduza a string: "); gets(string);
if(capi(string)){
puts("E capicua");
break;
}
else{
puts("Nao capicua");
break;
}
case 3:puts("Introduza a primeira string: "); gets(string);
puts("Introduza a segunda string: "); gets(string2);
if(strcmp(string, string2)==0){
puts("Sao iguais");break;}
else{
puts("Sao diferentes");break;}
case 4:puts("Introduza a primeira string: "); gets(string);
puts("Introduza a segunda string: "); gets(string2);
if(stricmp(string, string2)==0){
puts("Sao iguais");break;}
else{
puts("Sao diferentes");break;
}
case 5:puts("Introduza a string: "); gets(string);
puts("Introduza o carater a verificar: "); scanf(" %c",&ch);
printf("A string sem o carater é: %s",strdelc(string,ch));break;
case 6:puts("Introduza a string: "); gets(string);
printf("A nova string é: %s", trimright(string));break;
case 7:puts("Introduza a string: "); gets(string);
printf("A nova string é: %s", trimleft(string));break;
case 8: puts("Introduza a string: "); gets(string);
printf("A nova string é: %s", trimmiddle(string));break;
case 9:puts("Introduza a string: "); gets(string);
printf("A string invertida é: %s", meuinverter(string));break;
case 10:puts("Introduza a string: "); gets(string);
printf("O carater aparece: %dx", findchar(string, ch));break;
case 11:puts("Introduza a string: "); gets(string);
puts("Introduza o carater: "); scanf(" %c",&ch);
printf("O indice do carater é: %d", indchr(string,ch));break;
case 12:puts("Introduza a string: "); gets(string);
printf("A string em maisculas é: %s", mas(string));break;
case 13:puts("Introduza a string: "); gets(string);
printf("A string em minusculas é: %s", min(string));break;
case 14:puts("Introduza a string: "); gets(string);
puts("Introduza a segunda string: "); gets(string2);
printf("%s", mystrstr(string,string2));break;
default: puts("Invalido");break;
}
}
return 0;}