繁体   English   中英

比较字符串和键盘输入

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM