代码之家  ›  专栏  ›  技术社区  ›  Anuvansh Kumar

putc()在c中返回什么?

  •  1
  • Anuvansh Kumar  · 技术社区  · 7 年前

    putc() https://www.tutorialspoint.com/c_standard_library/c_function_putc.htm .现在如果 EOF 对于错误,那么一个自然的问题是,它在文件末尾返回什么?为此,我在dev c++中编写了以下内容:

    密码

    #include <stdio.h>
    
    int main() {
        char ch = EOF;
        printf("%d\n", putc(ch, stdout));
        printf("hello %d", EOF);
    
        return 0;
    } 
    

    输出

    255
    hello -1
    

    EOF 不是中所述的ASCII字符 What is the ascii value of EOF in c.? 那为什么呢 255 (是的,它不是ASCII)在第一行中,并且 -1 在第二个?

    3 回复  |  直到 7 年前
        1
  •  2
  •   vasek Melih Mucuk    7 年前

    EOF为-1,您可能已经发现了这一点。所以如果你 putc(EOF,stdout) 然后你看 255 因为-1转换为 unsigned char

        2
  •  0
  •   Stephan Lechner    7 年前

    根据 fputc unsigned char

    在内部,字符被转换为无符号字符 正在编写。

    char ch = EOF ,如果 EOF 实际上是 -1 ,然后转换 (char)-1 进入 (unsigned char)-1 给予 255 ,然后作为 int

        3
  •  0
  •   user2371524 user2371524    7 年前

    a putc() manual :

    fputc() putc() putchar() 返回写为 未签名 向一个 EOF 出错时。

    (强调矿山)

    EOF int -1 (许多实现都使用了这一点)。

    现在,如果你的 char 签署 EOF 烧焦 -1 .但函数使用 对于字符,则返回 255 未签名 烧焦 有8位)。


    记录在案 :通过 unsigned char 用于打印(字符常量很好),并将返回值作为 整数 。如果返回值不是 , 然后 你可以把它解释为 无符号字符 .