2013-04-07 3 views
0

모든 문자열을 모스 코드로 변환하는 코드를 작성했습니다. 코드는 자동으로 반복 될 때까지 완벽하게 작동합니다.자동으로 코드 반복

"while"또는 "do while"을 사용하는지 여부는 코드가 한 번만 실행 된 다음 종료됩니다. 문제의 원인을 파악하는 데 도움을 주시겠습니까? 사용자가 입력을 입력하면

int main() 
{ 
    cout<<"Enter the string: "; 
    char myStr[81]; 
    char ch='y'; 

    while (ch=='Y'||ch=='y') 
    { 
     getString(myStr); 
     toUpper(myStr,strlen(myStr)); 
     removeSpace(myStr); 
     getMorse(myStr,strlen(myStr)); 
     cout<<"to repeat press Y/y"; 
     cin>>ch; 
    } 
    return 0; 
} 

제가

void getString(char myStr[]) 
{ 
    cin.getline(myStr,81,'\n'); 
} 
+1

실제로 디버깅을 시도하고 중간 값을 출력 했습니까? –

+2

남은 입력이있을 수 있지만 루프 마지막 부분의 입력 문을 건너 뛰는 경우가 있습니다. – chris

+2

chris가 말했듯이,'getString'에 대한 코드를 볼 필요가 있습니다. – john

답변

1

를에는 getString() 함수를 추가, 그들은 입력 누른다. 해당 개행 문자 '\n'은 여전히 ​​cin 스트림에 있습니다. ignore이 필요합니다.

cin >> ch; 
cin.ignore(numeric_limits<streamsize>::max(), '\n'); //this ignores all subsequent characters until the newline character 
+1

나는 ignore, 즉'cin.clear()'를 호출하기 전에이를 지워야한다는 것을 배웠다. –