32

K&R book の例 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

3 に答える 3

72

CTRL+Dコマンドラインから ( *nix の場合) またはCTRL+ZEnter (Windows の場合) を使用して EOF をシミュレートできます。

于 2013-04-21T22:33:42.347 に答える