2013-04-21 3 views
16

K & R 책에서 예 1.9를 이해하려고하는데 EOF를 보내는 방법을 모르겠다. 일부 출처는 Ctr + Z에 대해 언급했지만 간단히 프로그램을 종료합니다. 어떻게 든 Enter와 Ctrl + Z, Ctrl + V 조합으로 EOF를 보낼 수 있었지만 재현 할 수는 없습니다.Windows 터미널을 통해 EOF를 보내는 방법

#include <stdio.h> 
#define MAXLINE 1000 

main() 
{ 
    int len; 
    int max; 
    char line[MAXLINE]; 
    char save[MAXLINE]; 

    max = 0; 
    while((len = getline_my(line, MAXLINE)) > 0) 
    if(len > max) { 
     max = len; 
     copy(line, save); 
    } 
    if(max > 0) 
     printf("%S", save); 
} 

getline_my(s, lim) 
char s[]; 
int lim; 
{ 
    int c, i; 

    for(i=0; i < lim-1 && (c = getchar()) != EOF && c != '\n'; i++)// As long as the condition is fulfilled 
     s[i] = c; 
    if (c == '\n') { 
     s[i] = c; 
     i++; 
    } 
    s[i] = '\0'; 
    return(i); 
} 

copy(s1, s2) 
char s1[]; 
char s2[]; 
{ 
    int i; 

    i = 0; 
    while((s2[i] = s1[i]) != '\0') 
     i++; 

} 
+0

CTRL D? 수도 작동하지 않을 수도 –

+2

불행히도 유닉스 용이었던 –

+0

아니에요 .. 이들은 cmd http://ss64.com/nt/syntax-keyboard.html에있는 모든 명령입니다 –

답변

40

당신은 명령 줄에서 CTRL+D (*에 대한 거절하다) 또는 (Windows 용) CTRL+Z와 EOF를 시뮬레이션 할 수 있습니다.

+1

이것은 나를 위해 (Windows 10 + 아나콘다 터미널) 작동하지 않았다 그러나 그 대답은 @mauriceShun이 제공 한 것입니다. – MrMas

+0

@MrMas 그들은 같은 말을하고 있습니다 : | – DarkWiiPlayer

3

printf("%S", save); ->printf("%s", save);

4

입력을 완료 할 준비가되면 Enter 키를 누른 다음 Ctrl+ZEnter을 눌러 입력을 완료하십시오.

int main(){ 
    char ch[100];  
    scanf("%[^EOF]",ch);  
    printf("\nthe string is:\n%s\n",ch);  
    fflush(stdin);  
    return 0;  
    } 
+0

'scanf ("% [^ EOF]", ch);와'fflush (stdin);'이 잘못되었습니다. – BLUEPIXY

관련 문제