如何让用户输入字符串进行字符串比较?

时间:2017-01-27 22:12:34

标签: c

我正在运行一个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;
}

1 个答案:

答案 0 :(得分:0)

请记住,数组始终是数组第一个对象的指针。 其次,在致电scanf()时,你只读了一个角色。不是整个字符串(在C中由%s表示)

总而言之,您对scanf()的调用不应该指针应该有字符串而不是字符< /强>

scanf("%s", Repeatprog);

或只是

gets (Repeatprog);

编辑:

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

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

注意:

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

  

对于本说明,请感谢下面的人我[评论]。我犯了一个大错,我很抱歉。