C语言 如何通过Windows终端发送EOF



我试图从K&R书中理解示例1.9,但我不知道如何发送EOF。一些消息来源提到了ctrl +Z,但这只是终止程序。我设法用Enter和Ctrl+Z的组合发送EOF,也许还有Ctrl+V,但我无法复制它。

#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] = '';
    return(i);
}
copy(s1, s2)
char s1[];
char s2[];
{
    int i;
    i = 0;
    while((s2[i] = s1[i]) != '')
        i++;
}

您可以使用CTRL+D(适用于*nix)或CTRL+Z然后从命令行输入(适用于Windows)来模拟EOF

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

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

最后,考虑到Windows上简单的K&R代码,这在类unix系统上是不容易完成的。你可以发送'^Z^M' (Ctrl-Z然后回车)来发送Windows等效的EOF,但是你在这个C程序中检查的字符'EOF'是不一样的。

简短的回答:你不能。

最新更新