[英]Comparing strings and keyboard inputs
当我在键盘上输入“quit”时,if 循环(由注释“here quit is implemented”标记)应该返回 true,并且程序应该结束。 但 strcmp 不返回零。 没有编译器错误。 我无法确定问题所在。
int numInput(){
char str[10];
int num;
char nStr[10];
char q[4] = "quit"; //Quit
LAND:
scanf("%s",&str);
if (strcmp(q,str) == 0){ //Here quit is implemented
exit(0);
}else{
printf(str);
}
num = atoi(str);
itoa(num,nStr,10);
if (strcmp(nStr,str) != 0){
printf("Please enter numbers only!\nEnter number here:");
goto LAND;
}
return num;
}
char
数组q
没有足够的空间来存储字符串"quit"
。
该字符串需要 5 个字符:4 个用于字母,1 个用于终止空字节。 而且由于数组不够大,尝试在其上使用字符串函数会导致这些函数读取数组的末尾。 这会触发未定义的行为。
数组需要至少大一个元素:
char q[5] = "quit";
甚至更好:
char q[] = "quit";
哪个大小的数组适合初始化程序。
此外,这是不正确的:
scanf("%s",&str);
当您传递一个指向数组的指针时, %s
格式说明符需要一个char *
。 这应该是:
scanf("%s",str);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.