Tag: eof

你如何阅读scanf直到C中的EOF?

我有这个,但一旦达到假定的EOF,它只是重复循环和scanf。 int main(void) { char words[16]; while(scanf(“%15s”, words) == 1) printf(“%s\n”, words); return 0; }

为什么Ctrl-Z不会触发EOF?

为什么Ctrl + Z不会触发循环来完成以下小程序? #include main() { int c; while ((c = getchar()) != EOF) { //nothing } return 0; } 如果我输入: test^ZEnter ,它不会退出循环。 我发现了相关的问题( 这里和这里 ),但没有解释它在Windows下的C(不是C ++)。 注意 :我在Windows 8.1上使用Visual Studio 2015 PRE

如何使用feof(FILE * f)?

我在使用do-while循环时遇到困难,当我们到达文件末尾时应该停止。 这是循环代码: do { if (pcompanyRow[0] != ‘#’ && pass == 1) { strtok(pcompanyRow, “:”); pcompanyName = strcpy(pcompanyName, strtok(NULL, “”)); pass = 2; fgets(pcompanyRow, 1024, f); } if (pcompanyRow[0] != ‘#’ && pass == 2) { strtok(pcompanyRow, “:”); pcompanySMSPrice = strcpy(pcompanySMSPrice, strtok(NULL , “”)); pass = 3; fgets(pcompanyRow, 1024 , f); } if (pcompanyRow[0] != […]

fgetc无法识别EOF

下面的程序在各种Solaris / Linux版本上运行良好,但在AIX上运行不正常。 但是,如果我在AIX上用while(c!=0xff)替换while(c!=EOF)它运行完全正常。 有什么想法吗? 我检查了AIX上的fgetc手册页,它应该返回EOF常量! #include #include #include int main() { char c; FILE *fp; fp = fopen(“a.txt”, “r”); c=fgetc(fp); while(c!=EOF) { c=fgetc(fp); printf(“%d”,c); } fclose(fp); return 0; }

为什么我需要两次键入Ctrl-D来标记文件结尾?

char **query; query = (char**) malloc ( sizeof(char*) ); int f=0; int i=0,j=0,c; while((c=getchar())!=EOF) { if(!isalpha(c)) continue; if(f==1) query=(char**) realloc(query,(i+1)*sizeof(char*)); query[i]=(char*) malloc(sizeof(char)); query[i][j]=c; j++; while( (c=getchar())!=EOF&&c!=’ ‘&&c!=’\t’ ) { query[i]=(char*) realloc(query[i],(j+1)*sizeof(char)); query[i][j]=c; ++j; } query[i][j]=’\0′; printf(“%s\n”,query[i]); if(c==EOF){ break; } ++i; f=1; j=0; } 我希望上面的代码片段读取由空格和制表符分隔的一串字符串,直到ONE EOF,但它需要2个EOF才能结束循环。 此外,字符串只能由字母字符组成。 我在约2天内挣扎。 请提供一些反馈。 编辑:最有可能的原因是我在写完最后一个字符串而不是输入键后按CTRL + D键,但现在我按Enter键然后按CTRL + D,它按预期工作。 但是,在按下最后一个字符串后按CTRL + […]

为什么我需要多个EOF(CTRL + Z)字符?

作为一个小背景,我对C编程语言很陌生,因此一直试图通过第二版Kernighan&Ritchie手册中的一些练习。 我确实意识到我可以通过更多地使用标准库来更简洁地处理某些问题,但是我试图尽可能地保持我的有用命令库与书本同步。 如果它有所不同,我正在使用Tiny C编译器(TCC)在Windows XP环境中编译我的源代码并在XP控制台(cmd.exe)中执行二进制文件。 问题 :处理End-of-File (EOF) characters 。 我已经整理了一个小测试案例来说明问题。 该程序似乎处理EOF字符(部分)。 我将尝试用样本输入/输出来演示问题。 #include int main() { int character, count; character = 0; character = getchar(); for (count = 0; character != EOF; ++count) { character = getchar(); } printf(“Count: %d”, count); return 0; } 示例输入1: abcd^Z[enter] (其中^ Z / CTRL + Z表示EOF字符,[enter]表示Enter键。) 样本输出1: Count: […]

用C代码表示EOF?

换行符在C代码中用”\n”表示。 是否有文件结束(EOF)字符的等价物?

比较unsigned char和EOF

当编译以下代码时,它进入无限循环: int main() { unsigned char ch; FILE *fp; fp = fopen(“abc”,”r”); if(fp==NULL) { printf(“Unable to Open”); exit(1); } while((ch = fgetc(fp))!=EOF) printf(“%c”,ch); fclose(fp); printf(“\n”,ch); return 0; } gcc编译器也会在编译时发出警告 abc.c:13:warning: comparison is always true due to limited range of data type 当unsigned char被char或int替换时,代码运行正常,即它终止。 但代码也适用于unsigned int 。 因为我已经读过EOF在stdio.h定义为-1然后为什么这个代码对unsigned char失败但是对unsigned int运行正常。