2014-01-21 2 views
0
#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을 입력 할 때마다 루프를 끊는 방법입니까?사용자가 "quit"을 입력 할 때 루프를 끊는 방법?

올바른 코드 :

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

답변

7
if (str == "quit") break; 

조건 str == "quit"는 문제가있는 부분이다. 문자를 비교하는 방법받지 않습니다 컴파일러의 원인이 "=="

if (strcmp(str, "quit") == 0) break; 
-1

당신은 연산자와 문자열을 비교할 수 없습니다 : 그것은 대신 문자열을 비교하는 strcmp를 사용해야합니다, 동일하지 않을 것이라고 포인터를 비교하는 것입니다. 문자열의 각 문자를 비교할 Strcmp ==> 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): 
    } 
+0

짓을 왜 어떤 변경이 있었는지를 설명해야합니다 비교 (<string.h>에서) strcmp 또는 strncmp을 사용해야합니다. – user2864740

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

는 두 char *

if (strncmp(str, "quit", 4) == 0) break; 
+0

'strncmp'는'strcmp'에 비해'strlen ("quit")'가 4로 잘 정의되어 있기 때문에 필요 없습니다. – user2864740

+1

'strncmp'는 또 다른 문제가 있습니다 : 사용자가'quitisnotwhateverwant'를 입력하면 어떻게 될까요? –

관련 문제