2014-10-04 6 views
-3
while((c= getchar()) != '\n' && c != EOF); 

gets()를 사용하여 문자열을 입력하면 문제가 발생했습니다. Google에서 입력 버퍼에 '\ n'값을 유지하고 있음을 발견했습니다. 여기에서 검색하여 위의 코드가 내 문제를 해결할 수있는 것으로 나타났습니다. 그러나 나는 그것의 파악을 아주 얻지 않는다. 이것은 무엇을 하는가 ?? 아무나 제게 계몽 해주십시오.이것은 무엇을합니까? while ((c = getchar())! = ' n'&& c! = EOF);

+2

아니요, C++을 직접 공부 한 다음 여기에 질문을 게시하십시오. –

+0

'C++ '태그를'C++'가 아닌'C' 태그로'C' 태그로 변경했습니다. – Benio

+5

@ 베니오는 그렇게하지 않습니다. 그것이 유효한 C++ 코드 일 경우 유효한 C가 중요하지 않습니다. 그리고 때로는 차이점이 중요합니다. –

답변

2

코드는 while -loop을 소개합니다. 종료 조건은 getchar()이 반환하는 값을 c 정수로 할당하고 줄 바꿈 문자 ('\n') 또는 EOF과 같은지 여부를 확인합니다. 일치하면 루프가 종료됩니다. 일치하지 않으면 다음 문자가 추출됩니다.

코드는 기본적으로 다음 줄 바꿈 또는 EOF에 도달 할 때까지 모든 문자를 건너 뜁니다.

for (;;) 
{ 
    c = getchar(); // c has been declared elsewhere 
    if (c == '\n' || c == EOF) 
     break; 
} 
+0

예! 이 방법을 이해하는 것이 한 줄로 응축 된 것보다 훨씬 쉽습니다. +1 – Adi

+0

@gotolabeladi, 당신은 upvote/+ 1에 대한 대리인이 충분하지 않지만 여전히 받아 들일 수 있습니다. –

3

C++에서 할당 할 때 값이 할당됩니다. 따라서 c= getchar()은 파일에서 다음 문자를 읽으며, (c= getchar()) != '\n'은 읽은 문자와 개행 문자를 비교합니다. 특별한 EOF 값에 대한 또 다른 테스트가 있는데, 파일의 끝에 도달하면 읽기를 계속 시도하지 않도록해야합니다.

while과 종료 세미콜론 사이에 아무 것도 입력 할 필요가 없으므로 입력을 멀리하고 있습니다.

+0

그래서 기본적으로 문자열을 입력하면 새로운 줄 문자를 찾을 때까지 문자열을 읽습니다. EOF 즉 -1 ?? – Adi

+2

@gotolabeladi 줄 바꿈 문자 *** 또는 *** EOF를 찾을 때까지 – Boann