2012-10-12 2 views
1

사용자가 Y 또는 y를 입력하는 동안 만 프로그램을 실행하려고하지만 한 번만 실행되며 Y 또는 y가 아니어도 실행됩니다. 입력 중 어느 것 Y, Y 일, N 또는 N잠시 동안 또는 그 동안?

printf("Welcome to the Jumble Puzzle Solver!\n\n"); 
printf("Would you like to enter a jumbled word?\n"); 
scanf("%s", &answer); 


    do{ 

    printf("What word would you like scored?\n"); 
    scanf("%s", &letters); 

    strcpy(changeletters, letters); 

    recursivepermute(letters, changeletters, checkword, k, dictionary ,max, min); 

    printf("Would you like to enter a jumbled word?\n"); 
    scanf("%s", &answer); 

    }while (answer == 'Y' || answer == 'y'); 
+2

'answer'는 어떤 유형입니까? 또한 숙제 태그는 사용되지 않습니다. – chris

+0

[상단 또는 하단의 테스트 루프? (while while do while)] (http://stackoverflow.com/questions/224059/test-loops-at-the-top-or-bottom-while-vs-do-while) – alk

답변

1

do { } while() 항상 실행될 적어도 한번 신체시킨다. 또한 answerchar 경우 scanf("%c"를 사용할 필요가

// If answer is: 
// char answer; 

scanf("%c", &answer); 
while (answer == 'Y' || answer == 'y') 
{ 
    printf("What word would you like scored?\n"); 
    // ... 

    scanf("%c", &answer); 
} 

: 당신이 조건을 먼저 확인하려면 동안 만 사용합니다. %s은 문자 열 (예 : char[20])을 스캔하는 것이며 strcmp 또는 이와 비슷한 방법을 사용하여 다르게 검사해야합니다.

+0

좋아요. 많은 의미. 나는 이것을 t % c로 변경하고 while 루프를 이와 같이 만들었지 만, Y 또는 y를 입력하더라도 여전히 프로그램이 종료됩니다. – Ryan

+0

@Ryan 디버거에서'answer'로 얻은 것을 확인하십시오. 그것은 'Y'또는 'y'입니까? '대답'은 어떻게 선언됩니까? –

+0

아, 내 문제를 알아 냈어. 여전히 char 응답 대신 char 응답으로 선언했다. 모든 도움을 주셔서 감사합니다! – Ryan

0

사용자가 게임을 한 번 재생 한 다음 다시 재생을 묻는 메시지가 표시되면 do-while 루프가 더 적절합니다. 하지만 사용자에게 게임을 전혀 안 함 옵션을 제공하려면 while 루프를 사용하십시오.

+0

많이 설명해 주셔서 감사합니다. – Ryan

관련 문제