#include <stdio.h>
int main(void) {
char str[100];
int i;
for(;;){
printf( "Enter a value :");
scanf("%s %d", str, &i);
if (str == "quit") break;
printf( "You entered: %s %d\n ", str, i);
}
}
我正在尝试让用户写字符和整数,然后输出这些值
我的问题是:当用户键入quit
或exit
时,如何打破循环?
正确代码:
#include <stdio.h>
#include <string.h>
int main(void) {
char str[100];
int i;
for(;;) {
printf( "Enter a value :");
scanf("%s %d", str, &i);
if (strcmp(str,"quit") == 0 || strcmp(str,"exit") == 0) break;
printf( "You entered: %s %d\n ", str, i);
}
}
答案 0 :(得分:7)
if (str == "quit") break;
条件str == "quit"
是有问题的部分。它会比较永远不会相同的指针,你应该使用strcmp
来比较字符串:
if (strcmp(str, "quit") == 0) break;
答案 1 :(得分:2)
你应该使用strcmp来比较一个字符串!
#include <stdio.h>
#include <string.h>
int main(void) {
char str[100];
int i;
for(;;) {
printf( "Enter a value :");
scanf("%s %d", str, &i);
if (strcmp(str,"quit") == 0) break;
printf( "You entered: %s %d\n ", str, i);
}
}
答案 2 :(得分:0)
您需要使用strcmp
或strncmp
(<string.h>
}来比较两个char *
if (strncmp(str, "quit", 4) == 0) break;
答案 3 :(得分:-1)
你不能将字符串与运算符“==”进行比较,因为编译器不会得到如何比较字符。你必须使用这个功能(如果你愿意,你可以使用自己的功能)==&gt; Strcmp将比较字符串的每个字符。
#include <stdio.h>
#include <string.h>
int main(void)
{
char str[100];
int i;
for(;;){
printf( "Enter a value :");
scanf("%s %d", str, &i);
if (strcmp(str,"quit") == 0 || strcmp(str,"exit") == 0) break;
printf( "You entered: %s %d\n ", str, i);
}
return (0):
}