当用户输入“退出”时如何打破循环?

时间:2014-01-21 03:18:37

标签: c string

#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);
  }
}

我正在尝试让用户写字符和整数,然后输出这些值 我的问题是:当用户键入quitexit时,如何打破循环?

正确代码:

#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);
}
}

4 个答案:

答案 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)

您需要使用strcmpstrncmp<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):
    }