c中EOF的ascii值是多少?

时间:2011-10-01 20:16:56

标签: c++ c

任何人都知道i的ASCII值是什么。

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

但是打印-1

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

但它的打印空白屏幕。

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

7 个答案:

答案 0 :(得分:40)

EOF(在C语言中定义)不是字符/不是ASCII值。这就是getc返回int而不是unsigned char的原因 - 因为读取的字符可以包含unsigned char范围内的任何值,以及getc的返回值}还需要能够代表非角色值 EOF(必然是否定的)。

答案 1 :(得分:9)

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

EOFint,其值为负值,如果要打印,则应使用%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(传输结束,因为这将正常信号和读取功能停止并切断文件。