printf,sprintf,fprintf的区别

本文详细介绍了C语言中printf、sprintf与fprintf这三个格式化输出函数的区别与应用场景。printf用于输出到屏幕,sprintf用于填充字符串,fprintf则用于写入文件。文章通过实例展示了这些函数的基本用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在写代码过程中总会遇到printf和sprintf,既然这两个都遇到了,那么不妨再加一个fprintf吧.

他们三个都是将格式化字符串输出,区别就是他们输出的目标不一样.

(1)printf,是把格式化字符串输出到标准输出(一般是屏幕).

printf()是C语言标准库函数,用于将格式化后的字符串输出到标准输出。标准输出,即标准输出文件,对应终端的屏幕。printf()申明于头文件stdio.h。

函数原型 int printf ( const char * format, ... );

返回值: 正确返回输出的字符总数,错误返回负值,与此同时,输入输出流错误标志将被置值,可由指示器ferror来检查输入输出流的错误标志。

调用格式: 
printf()函数的调用格式为:printf("格式化字符串",输出表列)。
格式化字符串包含三种对象,分别为: 
(1)字符串常量; 
(2)格式控制字符串; 
(3)转义字符。 
字符串常量原样输出,在显示中起提示作用。输出表列中给出了各个输出项,要求格式控制字符串和各输出项在数量和类型上应该一一对应。其中格式控制字符串是以%开头的字符串,在%后面跟有各种格式控制符,以说明输出数据的类型、宽度、精度等。

(2)sprintf,是把格式化字符串输出到指定字符串,所以参数比printf多了个char * ,那就是目标字符串的地址.

srpintf()函数的功能非常强大:效率比一些字符串操作函数要高;而且更具灵活性;可以将想要的结果输出到指定的字符串中,也可作为缓冲区,而printf只能输出到命令行上~

头文件:stdio.h

函数功能:格式化字符串,将格式化的数据写入字符串中。

函数原型:int sprintf(char *buffer, const char *format, [argument]...)

参数:

(1)buffer:是char类型的指针,指向写入的字符串指针;

(2)format:格式化字符串,即在程序中想要的格式;

(3)argument:可选参数,可以为任意类型的数据;

函数返回值:buffer指向的字符串的长度;

(3)fprintf,是把格式化字符串输出到指定文件中,所以参数比printf多了个文件指针File * ,那是目标文件的文件描述符(文件流指针)

下面简单演示下

运行结果

补充:

关于大家关心的fprintf的用法这里附上代码及运行截图

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
#include <assert.h>
#include <unistd.h>

const char * filePath = "/home/lijilei/1.txt";
const char * text = "hello world\n";
const char * textend = "end lalala\n";
int g_count = 0;

int main(int argc,char**argv)
{
    FILE *fp = NULL;
    fp = fopen(filePath,"a+");
    assert(fp > 0);

    while(true)
    {
        //printf("write text...\n");
        sleep(6);
        fwrite(text, strlen(text),1,fp);
        fflush(fp);
        
        ++g_count;
        if(g_count > 10)
        {
            //printf("write end text...\n");
            fwrite(textend, strlen(textend),1,fp);
            break;
        }
    }
    fprintf(fp,"我要写东西: %s","东西");
    fflush(fp);
    fclose(fp);

}

fprintf这个函数不能单独拿出来演示,必须学会文件操作后才可以理解fprintf的意思

fprintf跟fwrite一样的作用,就是把内容写到fp文件中,其实是写到缓冲区,真正写入文件的是fflush这个函数,调用fflush后会立即将缓冲区的内容写到文件

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值