2015-02-01 1 views
0

나는이 프로그램을 실행할 때 발생할 문제를 처리하는 방법을 모른다 1-16. 고정 된 크기가 될 때까지 입력의 모든 문자를 배열에 저장하고이 문자를 모두 계산합니다.Inresponsive 터미널 동안 ​​

for (i=i; c!= EOF && c!='\n'; ++i); 
    if (c == '\n') 
     ++i; 

    return i; 
} 

이것은 내가 추가 한 부분입니다. 배열의 범위보다 긴 문자열을 입력하면이 프로그램을 실행하려고 할 때마다 문제가 발생합니다 (코드에서 작성한 코드가 컨트롤을 취하는 경우). Windows 명령 프롬프트에서 딱지 점으로 끝납니다. 아무 것도 입력하지 마십시오. Ctrl+Z도 아닙니다.)

무슨 일입니까?

답변

3

for (i=i; c!= EOF && c!='\n'; ++i);은 무한 루프입니다. 새로운 문자를 읽거나 값을 재설정하지 않고 c입니다. 따라서 프로그램이이 코드에오고 c이 EOF 나 개행 문자가 아니면 영원히 반복됩니다.

당신은 아마 왜 당신은 여전히`I = i`가 있습니까

for (i=i; (c=getchar())!= EOF && c!='\n'; ++i); 

또는

while ((c=getchar())!= EOF && c!='\n') ++i; 
+0

같은 것을 원했다? –

+0

터미널이 더 이상 "멈추지"않는 동안, 이제는 입력 된 줄의 수에 따라 2 ~ 3 번 Ctrl + Z를 입력해야합니다. – maja

+0

'while (c! = EOF && c! ='\ n ') {c = getchar(); i ++;} ' – Marian