为了账号安全,请及时绑定邮箱和手机立即绑定

这个为啥运行不出来啊

这个为啥运行不出来啊

C
慕粉1637296256 2018-12-16 11:03:50
#include <stdio.h>#include <string.h>void main(){     int i; char *colour[]={"red", "blue", "yellow", "green", "black" };    char str[50]; getchar(); scanf("%s",str); for(i=0;i<5;i++) if(strcmp(colour[i],str)==0) {      printf("%d\n",i+1);      break; } if (i==5) printf("Not Found\n"); }
查看完整描述

3 回答

?
nisonGe

TA贡献1条经验 获得超0个赞

getchar()这个调用略显多余。你去掉试试。

如果不去掉的话,每次输入之前都需要输入一次回车,然后再输入字符串,这样才会匹配到结果。

查看完整回答
反对 回复 2018-12-16
?
想长高的小孩

TA贡献3条经验 获得超0个赞

对了,这个主函数应该不能用无返回值的,要用int

查看完整回答
反对 回复 2018-12-16
?
想长高的小孩

TA贡献3条经验 获得超0个赞

你这个错误好多啊,字符型指针不能用野址,而且输入字符时,要么是一起输入,要么是一个字符一个字符的输入,又不是二维的,一维的没法这样输入,“redbuleyellow”或者'r','e'这样输入,然后后面比较字符串的大小,第一个是直接字符常量和第二个一个字符组比较大小,两个类型都不同,一个是地址名,一个是常量,所以我觉得这个整个都要改,个人看法,希望对你有点帮助吧,可能有的我不知道的东西以为你也是错的,见谅;

查看完整回答
反对 回复 2018-12-16
  • nisonGe
    nisonGe
    char *colour[]={"red", "blue", "yellow", "green", "black" }; 这里定义的是一个指针数组,指向常量区的指针。不过这样写会保warning,因为const char* 指针强转为char* 指针。 scanf()函数可以支持连续输入,不过会有安全隐患就是了。 strcmp(colour[i],str) 这个函数的两个参数都是指针,colour[i]是一个指针,str是一个数组,但是在传递参数的时候会变成指针。 main函数最好返回类型是int,但是并不是一定得写成int main()..., 得看编译器
  • 3 回答
  • 0 关注
  • 1226 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信