2016-06-20 2 views
0

마지막으로 C로 프로그래밍 한 이후로 시간이 지났습니다. 이제 다시 C로 돌아 가려하지만 프로그램에 문제가 있습니다. 이 프로그램은 매우 간단합니다. char 배열을 char에 저장하기 위해 getchar를 사용합니다. 그러나 어떤 이유로 프로그램이 while 루프 이후에 실행을 멈 춥니 다.while 루프가 끝난 후 프로그램 실행이 중지됩니다.

#include <stdio.h> 
#define MAXLINE 1000 

int main(){ 
    char c; 
    char input[MAXLINE]; 
    int i = 0; 

    while((c = getchar()) != EOF){ 
     input[i] = c; 
     ++i; 
    } 
    printf("Still running"); 
} 

따라서 내 프로그램은 "아직 실행 중"을 인쇄하지 않습니다.

+0

입력이 'MAXLINE (1000) 자 이상이 될 수 있습니까? –

+0

루프를 깨기 위해 실제로'EOF '를 보냅니 까? –

+2

또한 ['getchar'] (http://en.cppreference.com/w/c/io/getchar)는'int'를 반환합니다. 이것은 실제로 매우 중요합니다. –

답변

2

보내기 (* nix Ctrl + Z는 Win), EOF를 보내면 여전히 실행 중입니다. getcharint 아닌 char 반환하기 때문에

[email protected]:~/program/progEdit# ./stktest.o 
sdf 
fdf 
sdf 
Still [email protected]:~/program/progEdit# 
+0

감사합니다. – Zyphicx

1

귀하의 프로그램은, 행운에 의해 작동합니다. 그 이유는 getcharEOF을 반환 할 수 있으며 반드시 char으로 표시 될 필요는 없습니다.

이 버그를 해결하려면 char cint c으로 바꿔야합니다.

+0

네, 그게 문제 중 하나였습니다. 그러나이 작업만으로는 작동하지 않았습니다. 입력 한 후에 Ctrl + Z를 눌러야했습니다. 내 코드의 결함 중 하나를 언급 한 이후로 나는 여전히 당신에게 업보트를 줄 것이다. – Zyphicx

관련 문제