任何人都知道i的ASCII值是什么。
我尝试printf("%d",EOF);
但是打印-1
并尝试printf("%c",EOF);
但它的打印空白屏幕。
所以任何人都知道EOF
的哪个键。
答案 0 :(得分:40)
EOF
(在C语言中定义)不是字符/不是ASCII值。这就是getc
返回int
而不是unsigned char
的原因 - 因为读取的字符可以包含unsigned char
范围内的任何值,以及getc
的返回值}还需要能够代表非角色值 EOF
(必然是否定的)。
答案 1 :(得分:9)
EOF的实际值是系统定义的,不是标准的一部分。
EOF
是int
,其值为负值,如果要打印,则应使用%d
格式字符串。请注意,这只会告诉您它在您的系统上的价值。你不应该关心它的价值。
答案 2 :(得分:2)
没有EOF的ascii值这样的东西。有一个包含127个字符的ASCII标准,EOF不是其中之一。 EOF是-1,因为这是他们决定#defined的特殊编译器,它可能是其他任何东西。
答案 3 :(得分:2)
正如赫弗南所说,这是系统定义的。你可以通过EOF常量访问它(它是一个constand?):
#include <stdio.h>
int main(void)
{
printf("%d\n", EOF);
}
编译后:
c:\>a.exe
-1
c:\>
答案 4 :(得分:1)
EOF没有ASCII值,因为他们说....没问题
你也可以通过if
条件来避免出现在最后的奇怪字符(这是EOF的数字表示),这是一个例子:
#include <stdio.h>
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;
}
就是这样
答案 5 :(得分:-1)
EOF不是ASCII字符。它的大小与字符大小不是1字节,可以通过
进行检查int main() {
printf("%lu", sizeof(EOF));
return 0;
}
然而,it is always defined to be -1。试试
int main() {
printf("%d",EOF);
return 0;
}
EOF的关键组合是 Crtl + D 。 EOF的等效字符取决于机器。可以通过以下方式检查:
int main() {
printf("%c", EOF)
return 0;
}
答案 6 :(得分:-4)
用于所有意图和目的0x04 EOT(传输结束,因为这将正常信号和读取功能停止并切断文件。