C语言的字符串数组的问题
问题描述:我定义了一个字符数组
#define LEGALS 5
const char legalInput = {"0","1","2","3","quit"};//只有五种可能的输入
当我把它调试输出的时候
printf(legalInput);
输出会是quit,这没有问题
但是当我把它放到我的程序里面的时候
char getInput(){
int i;
char inp = {"quit"};
while (1){
//获取输入
scanf("%4s",inp);//最多读取四个字符
while(getchar() != '\n');//将后面多余的字符全部丢弃;
/*下面是校验目录页输入是否合法*/
for (i=0;i<LEGALS;i++){
/*调试输出*/
printf("%s\t\t",inp);
printf(legalInput);
printf("\n");
if(strcmp(inp,legalInput)==0)
return i;
}
/*-------校验结束-----------*/
//运行到了这一步了,就说明用户没有按照规则来输入,所以折返到while代码块的第一行
printf("%s",inp);
printf("非法输入!\n");
}
}
调用上面这个函数的时候的输出如下
quit 0
quit 1
quit 2
quit 3
quit quit16
quit非法输入!
问题:
1.为什么我输入的quit经过每一次循环就会多一些奇怪的后缀?
2.为什么我这一次调试输出 legalInput 的时候多了一个16?
谢谢大佬的解答{:10_254:} char inp = {"quit"}; 人造人 发表于 2019-6-2 13:14
不懂。。。 可乐与酱油 发表于 2019-6-2 20:41
不懂。。。
quit是4个字符
'\0'是一个字符
一共5个字符
char inp = {"quit"};
char inp = {"quit"}; 人造人 发表于 2019-6-2 22:06
quit是4个字符
'\0'是一个字符
一共5个字符
明白了,谢谢
页:
[1]