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