我试图从K&R书中理解例1.9,但是我不知道如何发送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++; }
您可以使用CTRL+D
(用于* nix)或CTRL+Z
(用于Windows)从命令行模拟EOF。
printf("%S", save);
– > printf("%s", save);
在寡妇中,当您准备好完成输入时,请按Enter
键,然后按Ctrl+Z
,然后Enter
完成输入。
int main(){ char ch[100]; scanf("%[^EOF]",ch); printf("\nthe string is:\n%s\n",ch); fflush(stdin); return 0; }