c中EOF的ascii值是多少?

任何人都知道i的ASCII值是多少。

我尝试printf("%d",EOF);

但它的打印-1

并尝试printf("%c",EOF);

但它的打印空白屏幕。

所以任何人都知道EOF哪个键。

EOF (在C语言中定义)不是字符/非ASCII值。 这就是getc返回int而不是unsigned char原因 – 因为读取的字符可以在unsigned char范围内具有任何值,并且getc的返回值也需要能够表示非字符值 EOF (必须负)。

EOF的实际值是系统定义的,不是标准的一部分。

EOF是一个带负值的int ,如果要打印它,则应使用%d格式字符串。 请注意,这只会告诉您它在您系统上的价值。 你不应该关心它的价值。

没有像EOF的ascii值这样的东西。 有一个包含127个字符的ASCII标准,EOF不是其中之一。 EOF是-1,因为这是他们决定#defined的特定编译器,它可能是其他任何东西。

正如赫弗南所说,这是系统定义的。 你可以通过EOF常量访问它(它是一个constand?):

 #include  int main(void) { printf("%d\n", EOF); } 

编译后:

 c:\>a.exe -1 c:\> 

EOF没有ASCII值,因为他们说….没问题

你也可以通过使if条件成为例子来避免出现在最后的奇怪字符(这是EOF的数字表示):

 #include  int main(void) { FILE *file = fopen("/home/abdulrhman/Documents/bash_history.log", "r"); FILE *file2 = fopen("/home/abdulrhman/Documents/result.txt", "w"); file = file2 = char hold = 'A'; while(hold != EOF) { hold = getc(file); if(hold == EOF) break; // to prevent EOF from print to the stream fputc(hold, file2); } fclose(file); return 0; } 

这就对了

EOF不是ASCII字符。 它的大小与字符大小不是1字节,可以通过检查

 int main() { printf("%lu", sizeof(EOF)); return 0; } 

但是, 它始终定义为-1 。 尝试

 int main() { printf("%d",EOF); return 0; } 

EOF的关键组合是Crtl + D. EOF的等效字符取决于机器。 可以通过以下方式检查:

 int main() { printf("%c", EOF) return 0; } 

为了所有意图和目的0x04 EOT(传输结束,因为这将正常信号和读取function停止并切断该点的文件。