2017-05-24 3 views
1

[도움말] 안녕하세요 여러분, 저는 프로그래밍과 웹 사이트에서 초보자입니다. 그러나 오랫동안 알고 있고 항상 도움이되었지만 지금은 계정을 만들기로 결정했습니다.하나의 문자열 변수가 C 언어에서 do 변수의 변수가 아닌 특정 문자열과 일치하는지 어떻게 확인할 수 있습니까 ?? (두 문자열을 비교하지 않음)

나는 C에서 문자열을 처리해야한다는 명령을 이미 마쳤으나 "strcmp"와 "strncmp"라는 것이 가장 좋았습니다. ,하지만 그게 내가 원하는 건 아니에요, 사촌은 두 개의 문자열을 비교합니다. 예는 "Y": 난 그냥 그것은 작동하지 않습니다

char input[3]; 
    do { 
     //important code 
     printf ("You want to continue??); 
     fflush(stdin); 
     gets(input); 
     } while (input == "yes" || "Yes); 

, 내가 좋아하는 캐릭터 단지 문자를 사용하지해야합니다 ...이 같은 일을 비교합니다. 내가 원하는 걸 할 수있는 방법이 있니? 이 문자열을이 값과 비교하는 방법은 무엇입니까? Btw, 코드 부분에서 탭을 사용할 수없는 이유는 무엇입니까? 초보자 용 질문에 사과드립니다 ...

감사합니다. 정말 고맙습니다. 많은 학생들이 똑같은 의심을 품고 있다는 것을 알고 있습니다. 그래서 개조자는 그것을 계속 유지합니다.

안녕!

+0

오류가 발생합니까? 그렇다면 무엇입니까? – Eric

+0

두 개의 문자열을 비교하려고합니다. 그들 중 하나가 const 인 것은 중요하지 않습니다. == 주소 만 비교하므로 서로 다른 객체에 대해 항상 false를 평가합니다. –

+0

오류는 없지만 프로그램은 단순히 예상 한대로 수행하지 않으며 잠시 동안 계속해서 코드를 진행하지 않습니다. 그래서 프로그램이 거기서 멈추게됩니다. – Speyke

답변

1

문자열 비교를 수행하려면 strcmp을 사용하십시오. 원하는대로 하나의 변수 만 비교할 수 있지만 두 개의 다른 값이 있습니다. 변경 라인 :

while (input == "yes" || "Yes"); 

에 : 또한

while (strcmp(input,"yes") == 0 || strcmp(input, "Yes") == 0); 

변경 :

char input[3]; 

에 : 당신이 고려해야 할로

char input[4]; 

\0 문자를 종료 .

+0

고마워요! 당신은 여분의 문자가 배열에 관한 null "\ 0"물건의 cuz가 필요하다고 확신합니까? 내가 너에게 명성을 어떻게주는거야 ?? 나는 아직 투표를 할 수 없다. 미안하다! – Speyke

+0

@Speyke 모든 문자열은 종료 문자 '\ 0'으로 끝납니다. 예 :) 다행입니다. 당신은 내 대답을 받아들임으로써 나에게 평판을 주었고, 만약 당신이 upvote하고 싶다면 대답의 왼쪽에있는 위 삼각형을 누를 수있다. :) – Marievi

0

여기서 나는 당신이 성취하려는 것을위한 간단한 해결책을 썼다.

#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 

int main() 
{ 
    char input[4]; 

    do { 
     printf ("You want to continue??"); 
     fflush(stdin); 
     gets(input); 
    } while (strcmp(input, "yes") == 0 || strcmp(input, "Yes") == 0); 

    return 0; 
} 
+0

Thanksssss! 내가 너에게 명성을 어떻게주는거야 ?? 나는 아직 투표를 할 수 없다. 미안하다! – Speyke

0

대개 다음 입력에 을 통해 전달되는 개행 문자로 실행됩니다. 여기에 대한 해결책이 있습니다.

#include <stdio.h> 
#include <stdlib.h> 

int 
main(void) 
{ 
    char input[4], garbage[50]; 
    do 
    { 
     //important code 
     printf ("You want to continue??"); 
     scanf("%s", input); 
     fgets(garbage, sizeof(garbage), stdin); //Newline char is now stored into garbage. 
    } while (strcmp(input,"yes") == 0 || strcmp(input,"Yes") == 0); 

    return 0; 
}