首页 > 编程知识 正文

printf输出错误,printf打印不出来信息

时间:2023-05-05 20:12:20 阅读:262140 作者:466

原型

printf和perror都可以在屏幕上打印信息。那么这两个有什么区别呢?
首先看函数原型:

#include <stdio.h>void perror(const char *s); // perror - print a system error message#include <stdio.h>int printf(const char *format, ...);

显著区别:

perror只能接收一个字符串,比如perror(“prefix:”)
接收的字符串会被作为前缀,后面会自动打印错误信息。printf无需多言 使用 perror打印错误信息非常方便:perror("prefix:")//输出:// prefix: info about errno而printf想要打印错误信息,需要这样写:printf("prefix: %sn", strerror(errno));//输出:// prefix: info about errno 区别总结

可以看到,printf想要打印错误信息,需要配合函数strerror和linux系统变量errno一起使用。而perror只需要简单传入一个前缀就好了。这是使用方法上两者的区别。

此外,printf的是往标准输出(stdout)上打印,而perror是往标准错误输出(stderr)上打印。printf的fmt参数末尾必须要带上’n’,才能促使printf函数将写入缓冲区的数据打印到屏幕上;若不加’n’,则每次调用完printf后,不会立即打印,要等到缓冲区满或者在程序中手动调用fflush(stdout)函数时才会打印到屏幕上。这点要尤其注意
而perror的stderr是不缓冲、立即打印的。

综上,如果是打印错误信息,尤其是调用系统调用函数或库函数导致的错误,首选perror,因为使用简单且内容自动刷新到屏幕上;如果对格式有更多定制化的要求,那么可以使用printf、strerror、errno,但是结尾记得加’n’,以确保数据及时刷新到屏幕上。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。