我正在运行一个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;
}
答案 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
。
对于本说明,请感谢下面的人我[评论]。我犯了一个大错,我很抱歉。