如何通过Windows终端发送EOF

时间:2013-04-21 21:27:30

标签: c windows

我试图理解K& R书中的例1.9,但我不知道如何发送EOF。一些消息来源提到了Ctr + Z,但这只是终止了程序。我以某种方式设法使用Enter和Ctrl + Z以及Ctrl + V的组合发送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++;

}

4 个答案:

答案 0 :(得分:54)

您可以从命令行使用CTRL+D(对于* nix)或CTRL+Z(对于Windows)模拟EOF。

答案 1 :(得分:4)

在寡妇中,当您准备好完成输入时,请按Enter键,然后按Ctrl+Z,然后按Enter完成输入。

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

答案 2 :(得分:2)

printf("%S", save); - &gt; printf("%s", save);

答案 3 :(得分:1)

最后,鉴于用于类似Unix的系统的简单K&R代码,在Windows上很难做到这一点。您可以发送'^ Z ^ M'(Ctrl-Z然后按Enter)以发送等效于Windows的EOF,但您要在此C程序中检查的char'EOF'不相同。

简短的回答:您不能。