猿问

如何通过Windows终端发送EOF

我正在尝试从K&R书中理解Example 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++;


}

PIPIONE
浏览 789回答 3
3回答

忽然笑

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

鸿蒙传说

最后,鉴于简单的K&R代码(适用于类Unix系统),在Windows上无法轻松完成。您可以发送'^ Z ^ M'(Ctrl-Z然后按Enter)以发送等效于Windows的EOF,但是您要在此C程序中检查的char'EOF'不相同。简短的答案:您不能。
随时随地看视频慕课网APP
我要回答