fprintf、fflush(stdout)、printf、sprintf与fprintf 的用法区分
1: fprintf:
fprintf是用于文件操作的,原型是int fprintf( FILE *stream, const char *format [, argument ]...);fprintf()函数根据指定的format(格式)发送信息(参数)到由stream(流)指定的文件.因此fprintf()可以使得信息输出到指定的文件。fprintf()的返回值是输出的字符数,发生错误时返回一个负值.
char name[20] = "Mary";
FILE *out;
out = fopen( "output.txt", "w" );//若不存在该文件,则将在应用程序目录下新建一个文件
if( out != NULL )
fprintf( out, "Hello %s\n", name );
对于其输出格式参数,和printf()一样.
fprintf也可以输出到屏幕而非文件中:printf(...)=fprintf(stdout,...).
stdout是标准输出设备的文件句柄宏定义
printf其实就是fprintf的第一个参数设置为stdout
你可以理解为它就是一个文件,而这个文件和标准输出设备(屏幕)建立了某种关联,当数据写到这个文件里面的时候,屏幕就会通过既定的方式把你写进去的东西显示出来
2:fflush(stdout):
表头文件:#include <stdio.h>
定义函数:int fflush(FILE *stream)
函数说明:fflush()会强迫将缓冲区内的数据写回参数stream指定的文件中。如果参数stream为NULL, fflush()会将所有打开的文件数据更新。
返回值 :成功则返回0, 失败返回EOF, 错误代码存于errno中
用途:在使用多个输出函数连续进行多次输出时,有可能发现输出错误。因为下一个数据在上一个数据还没输出完毕,还在输出缓冲区中时,下一个printf就把另一个数据加入输出缓冲区,结果冲掉了原来的数据,出现输出错误。 在 printf()后加上fflush(stdout); 强制马上输出,例子:
#include<stdio.h>
#include<unistd.h>//unix环境
int main()
{
printf("hello");
fflush(stdout);
fork();//fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事
return 0;
}
这样输出一个hello
#include<stdio.h>
#include<unistd.h>
int main()
{
printf("hello");
// fflush(stdout);
fork();
return 0;
}
这样会输出两个hello
3:printf、sprintf与fprintf 的用法区分:该部分引自:文章转自:http://www.cnblogs.com/stli/admin/EditArticles.aspx
1.printf 是和标准输出文件(stdout)关联的,fprintf 则没有这个限制.
2.fprintf是用于文件操作的,原型是int fprintf( FILE *stream, const char *format [, argument ]...);
3.sprintf是格式化输出到一个字符串,fprintf是格式化输出到一个stream,通常是到文件。
int fprintf( FILE *stream, const char *format [, argument ]...);
int sprintf( char *buffer, const char *format [, argument] ... );
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库