C中perror函数两个输出执行顺序的区别
Difference between the execution sequence of two outputs of perror function in C
Difference between output sequence on the same code on removing "\n"
#include<stdio.h>
#include<errno.h>
#include<string.h>
int main()
{
FILE * fp;
fp = fopen("GeeksForGeeks", "/root/C");
printf("Value of error no : %d\n", errno);
printf("The error message is : %s\n", strerror(errno));
perror("Message from perror.");
return 0;
}
这是我的代码,但是当我删除“\n”时,perror 的执行顺序发生了变化。
谁能解释一下为什么?
很可能,stdout
处于行缓冲模式,因此它在 \n
上刷新,并且 perror
写入 stderr
。
在 perror
调用之前添加 fflush(stdout);
将修复它。
Difference between output sequence on the same code on removing "\n"
#include<stdio.h>
#include<errno.h>
#include<string.h>
int main()
{
FILE * fp;
fp = fopen("GeeksForGeeks", "/root/C");
printf("Value of error no : %d\n", errno);
printf("The error message is : %s\n", strerror(errno));
perror("Message from perror.");
return 0;
}
这是我的代码,但是当我删除“\n”时,perror 的执行顺序发生了变化。 谁能解释一下为什么?
很可能,stdout
处于行缓冲模式,因此它在 \n
上刷新,并且 perror
写入 stderr
。
在 perror
调用之前添加 fflush(stdout);
将修复它。