Как отправить EOF через терминал Windows - программирование
Подтвердить что ты не робот

Как отправить EOF через терминал Windows

Я пытаюсь понять пример 1.9 из книги K & R, но я не понимаю, как отправить EOF. Некоторые источники упоминают Ctr + Z, но это просто завершает программу. Мне как-то удалось отправить EOF с комбинацией Enter и Ctrl + Z и, возможно, 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] = '\0';
    return(i);
}

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

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

}
4b9b3361

Ответ 1

Вы можете имитировать EOF с помощью CTRL+D (для * nix) или CTRL+Z (для Windows) из командной строки.

Ответ 2

В вдовах, когда вы готовы завершить ввод, нажмите клавишу Enter, а затем нажмите Ctrl+Z, а затем Enter, чтобы завершить ввод.

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

Ответ 3

printf("%S", save);printf("%S", save);

Ответ 4

В конце концов, в Windows это сделать нелегко, учитывая простой код K & R, предназначенный для Unix-подобных систем. Вы можете отправить '^ Z ^ M' (Ctrl-Z и затем Enter), чтобы отправить Windows-эквивалент EOF, но символ 'EOF', который вы проверяете в этой программе на C, не тот.

Краткий ответ: вы не можете.