我正在尝试,但无法弄清楚程序中的最后一个do-while循环是如何工作的。 它应该从最后到第一个位置打印文件的字符,并在文件跨越文件边界时终止。 我显示的代码正在工作,但我没有得到如何。 虽然条件是我似乎无法理解,为什么不符号!用于while中的条件。无法理解end while循环到底是如何工作的
#include <stdio.h>
int main()
{
long n, k;
char c;
FILE *fp;
fp = fopen("RANDOM", "w");
while ((c = getchar()) != EOF) {
putc(c, fp);
}
n = ftell(fp);
printf("\nNo. of characters entered by the user is : %ld\n", n);
fclose(fp);
fp = fopen("RANDOM", "r");
k = 0L;
while (feof(fp) == 0) {
fseek(fp, k, 0);
n = ftell(fp);
c = getc(fp);
printf("The character at %ld position is %c\n", n, c);
k += 5L;
}
fseek(fp, -1L, 2);
do {
printf("%c", getc(fp));
} while(!fseek(fp, -2L, 1));
putchar('\n');
}
此代码工作正常,只是不明白为什么不“!”因为我想使用相同的条件,但没有使用部分。
“此代码正常工作”和“while(feof(fp)== 0){... c = getc(fp); printf(“... is%c \ n”,c);'怀疑打印出一个字符值为'(unsigned char)EOF' – chux