繁体   English   中英

如何让用户输入一个单词进行字符串比较?

[英]How do I get the user to input a word for string comparison?

我正在运行一个 while 循环,以便用户可以不断输入表达式,直到他们表示要退出程序。 我正在使用strcmp()来比较两个字符串,因此一旦它们进入quit程序就会停止。 但是程序一直在运行,有什么想法吗?

#include <stdio.h>
#include <string.h>
int main()
{
    int min12=0;
    char opper;
    int x=0;
    int min13;
    char *Repeatprog="cont";
    char *Repeatprog1="quit";

    while (strcmp(Repeatprog,Repeatprog1))
    {
    printf("enter the integer number \n");
    scanf( "%d %c %d", &min12, &opper, &min13);
    printf("%d %c %d\n", min12, opper, min13);

    printf("Type the word quit to end program\n");
    scanf("%s", Repeatprog);
    }
    printf("Good Bye");
    return 0;
}

永远记住,数组指向数组第一个对象的指针 其次,在您调用scanf()您只读取了一个字符。 不是一个完整的字符串(在 C 中用%s表示)

所以总而言之,您对scanf()调用不应该有一个指针,应该有一个string而不是一个character

scanf("%s", Repeatprog);

或者干脆

gets (Repeatprog);

编辑 :

正如评论者@EOF 所说, gets()不是一个好主意,因为它会导致Undefined Behaviour 那是因为程序可以读取比它应该有的更多的字符并导致溢出,因此它是不安全的。

所以我推荐使用char *fgets(char *str, int n, FILE *stream)

笔记:

此外,您的代码正在使用字符串文字。 因此,如果您尝试更改char指针的内容,则会导致Undefined Behaviour

对于这个笔记,请感谢我下面的人[评论]。 我犯了一个巨大的错误,我很抱歉。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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