|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
问题描述:
我定义了一个字符数组
- #define LEGALS 5
- const char legalInput[LEGALS][4] = {"0","1","2","3","quit"};//只有五种可能的输入
复制代码
当我把它调试输出的时候
输出会是quit,这没有问题
但是当我把它放到我的程序里面的时候
- char getInput(){
- int i;
- char inp[4] = {"quit"};
-
- while (1){
- //获取输入
- scanf("%4s",inp);//最多读取四个字符
- while(getchar() != '\n');//将后面多余的字符全部丢弃;
-
-
- /*下面是校验目录页输入是否合法*/
- for (i=0;i<LEGALS;i++){
- /*调试输出*/
- printf("%s\t\t",inp);
- printf(legalInput[i]);
- printf("\n");
- if(strcmp(inp,legalInput[i])==0)
- return i;
-
- }
- /*-------校验结束-----------*/
-
-
- //运行到了这一步了,就说明用户没有按照规则来输入,所以折返到while代码块的第一行
- printf("%s",inp);
- printf("非法输入!\n");
-
-
- }
- }
复制代码
调用上面这个函数的时候的输出如下
- quit 0
- quit 1
- quit 2
- quit 3
- quit quit16
- quit非法输入!
复制代码
问题:
1.为什么我输入的quit经过每一次循环就会多一些奇怪的后缀?
2.为什么我这一次调试输出 legalInput[4] 的时候多了一个16?
谢谢大佬的解答
quit是4个字符
'\0'是一个字符
一共5个字符
|
|