fprintf和printf有啥区别吗?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了fprintf和printf有啥区别吗?相关的知识,希望对你有一定的参考价值。

1、原形:fprintf的函数原型为int fprintf( FILE *stream, const char *format, [ argument ]...);而printf的函数原型为:int printf( const char *format [, argument]... )。

2、输出的目标:printf,是把格式字符串输出到标准输出(一般是屏幕,可以重定向);fprintf, 是把格式字符串输出到指定文件设备中,所以参数笔printf多一个文件指针FILE*。

3、缓冲:printf是有缓冲的输出;fprintf没有缓冲。

4、功能:fprintf()传送输出到一个流中的函数;sprintf()格式化输出到数组的函数。

5、返回值:fprintf()成功则返回输出的字节数,错误则返回EOF;sprintf()实际写入数组的字符个数。

扩展资料:

1、fprintf()传送输出到一个流中的函数

原形:int fprintf(FILE *stream,const char *format[,argument,...])

功能:①向文件指针指向的文件输出ASCⅡ代码

②向显示器输出错误信息 

使用形式:

①fprintf(文件指针,"输出格式",输出项系列);

②fprintf(stderr,"错误信息");

使用实例:fprintf(stream,"%d %c %f",i,c,f);

其中定义FILE *stream;

int i; char c; float f;

返回值:成功则返回输出的字节数,错误则返回EOF。

头文件:stdio.h

2、sprintf()格式化输出到数组的函数

原形∶int sprintf(buf,format,arg_list)

其中char *buf;

功能∶把arg_list参量的值按format的格式输出到buf中。

例∶sprintf(buffer,"相对扇区号∶%s(其中∶柱面号为%d/磁头号为%d/扇区号为%d)",string,cyls,head,sector);

其中char buffer[100];

char *string="  ";

int cyls,head,sector;

返回值∶实际写入数组的字符个数。

头文件∶stdio.h

参考技术A

1,printf函数原型extern int printf(const char *format,...)。

2,fprintf函数原型为int fprintf( FILE *stream, const char *format, [ argument ]...)。

3,printf用于向终端(显示器、控制台等)输出字符,格式控制由要输出的文字和数据格式说明组成。

4,fprintf其作用是传送格式化输出到一个文件中与打印机,输出函数根据指定的格式向输出流写入数据。

扩展资料

fprintf( )会根据参数format 字符串来转换并格式化数据, 然后将结果输出到参数stream 指定的文件中, 直到出现字符串结束('\\0')为止。

需要注意的一点是,头文件<stdio.h>为旧版C语言用法,是错误的。

int fprintf (FILE* stream, const char*format, [argument])

FILE*stream:文件指针

const char* format:输出格式

[argument]:附加参数列表

fprintf()函数根据指定的format(格式)发送信息(参数)到由stream(流)指定的文件. fprintf()只能和printf()一样工作. fprintf()的返回值是输出的字符数,发生错误时返回一个负值.

printf在c语言中产生格式化输出的函数(定义在 stdio.h 中),其向未重定向终端(显示器、控制台等)输出字符。格式控制由要输出的文字和数据格式说明组成。

要输出的文字除了可以使用字母、数字、空格和一些数字符号以外,还可以使用一些转义字符表示特殊的含义。

Format 参数是包含三种对象类型的一个字符串。

* 无格式字符复制到输出流。

* 转换规范,每个规范导致在值参数列表中检索 1 个或更多个项。

* 转义序列。

参考技术B

1、作用不同:fprintf是用于文件操作的;printf就是在屏幕打印出一段字符串。

2、原型不同:fprintf原型是int fprintf( FILE *stream, const char *format [, argument ]...);printf原型是int printf( const char *format [, argument]...) 。

3、输出不同:fprintf(stdout, "This is a test.\\n");
和printf("This is a test.\\n")。

扩展资料

用法

1、fprintf

#include <cstdio>

#include<cstdlib>

int fprintf( FILE *stream, const char *format, ... );

fprintf()函数根据指定的format(格式)发送信息(参数)到由stream(流)指定的文件. fprintf()只能和printf()一样工作. fprintf()的返回值是输出的字符数,发生错误时返回一个负值。

2、printf

printf 函数的一般形式为:

int printf(const char *format, [argument]);

以上形式,我们在Visual C++里输入“printf”(将会看到)。

说明printf函数类型为整型,其返回值是整型值。

其值为printf实际控制输出的字符数。

参考资料:百度百科-printf

百度百科-fprintf

参考技术C

fprintf和printf是计算机C语言中的命令符,区别如下:

1.函数原型不同

fprintf的函数原型为:int fprintf( FILE *stream, const char *format, [ argument ]...);

printf的函数原型为:int printf( const char *format [, argument]... );

2.输出目标不同

fprintf向文件输出:fprintf(fp,"%s",name);fp为文件指针。

printf向字符串(buffer)输出:sprintf(buff,"%s",name);buff为字符数组,printf是标准输出流(stdout)的输出函数,向屏幕标准设备输出,相当于:fprintf(stdout,"%s",name)。

3.作用不同:fprintf是用于文件操作的;printf就是在屏幕打印出一段字符串。

参考资料:百度百科-printf

百度百科-fprintf

参考技术D

fprintf和printf是计算机C语言中的命令符,区别如下:

一、函数原型不同

1、fprintf的函数原型为:int fprintf( FILE *stream, const char *format, [ argument ]...);

2、printf的函数原型为:int printf( const char *format [, argument]... );

二、输出目标不同

1、fprintf向文件输出:fprintf(fp,"%s",name);fp为文件指针。

2、printf向字符串(buffer)输出:sprintf(buff,"%s",name);buff为字符数组,printf是标准输出流(stdout)的输出函数,向屏幕标准设备输出,相当于:fprintf(stdout,"%s",name)。

三、用法不同

1、fprintf

#include <stdio.h>

#include<stdlib.h>

int fprintf( FILE *stream, const char *format, ... );

fprintf()函数根据指定的format(格式)发送信息(参数)到由stream(流)指定的文件. fprintf()只能和printf()一样工作. fprintf()的返回值是输出的字符数,发生错误时返回一个负值.

2、printf

printf 函数的一般形式为:

int printf(const char *format, [argument]);

以上形式,我们在Visual C++里输入“printf”(将会看到)。

说明printf函数类型为整型,其返回值是整型值。

printf函数实际上是将所有参数按字符输出,根据该函数的参数1(const char *format)。

其值为printf实际控制输出的字符数。

参考资料:百度百科-printf

百度百科-fprintf

哪个更可取 - printf 或 fprintf

【中文标题】哪个更可取 - printf 或 fprintf【英文标题】:Which is preferable - printf or fprintf 【发布时间】:2012-10-27 01:06:31 【问题描述】:

我知道这两个函数都可以用来输出到控制台。 我读了that question,但没有人不知道在输出到控制台时更喜欢使用哪个。 那么哪个功能更好,有什么大的区别吗?

【问题讨论】:

这取决于你。你是程序员。您设置首选项。 【参考方案1】:

每个进程都有一个名为stdin 的输入流和两个输出流stdoutstderr。这些输出流都连接到您的终端,因此以下命令都会将“hello”行打印到您的终端:

printf("hello\n");
fprintf(stdout, "hello\n");

fprintf(stderr, "hello\n");

前两个完全相同,第一个更短更方便。第一种是最常用的。

第三个不同之处在于发送到stderr 的内容与发送到stdout 的内容在逻辑上是分开的。它通常用于您希望用户看到的错误消息。库函数perror 将其错误消息打印到stderr

stderr 流在逻辑上分离的意义在于它的内容可以与stdout 分离。例如,假设我们使用命令ls -l 列出一个文件。

$ touch myfile
$ ls -l myfile
-rw-r--r--  1 wrm  staff  0  6 Nov 20:44 myfile

现在,如果我们将ls 的输出重定向到另一个文件,我们会看到以下内容:

$ ls -l myfile > otherfile
$ 

没有输出输出,因为&gt;ls 进程的stdout 流重定向到otherfile。您可以通过查看otherfile 看到它重定向的输出:

$ cat otherfile 
-rw-r--r--  1 wrm  staff  0  6 Nov 20:44 myfile
$ 

但是&gt; 没有重定向stderr 流。您可以通过删除myfile 并重新运行重定向的ls -l 命令来测试:

$ rm myfile
$ ls -l myfile > otherfile
ls: myfile: No such file or directory
$ 

所以在这里你可以看到虽然 stdout 被重定向到 otherfilestderr 没有被重定向,所以它的内容出现在终端上。还要注意otherfile 现在是空的,因为ls 命令没有找到myfile,所以没有任何东西可以发送到stdout

也可以重定向stderr,但这取决于您的shell(控制您的终端的程序)如何完成。

【讨论】:

【参考方案2】:

引用标准(n1570 中的 7.21.6.3):

printf 函数等效于 fprintf 插入参数 stdoutprintf 的参数之前。

所以printf打印到控制台时更方便,否则没有区别。但是fprintf如果要更改输出目标,修改起来会容易一些。

【讨论】:

不幸的是,情况并非总是如此,ARM v7 LEDE 工具链将绕过 printf,而 fprintf(stdout, ...) 将正常工作。 这意味着它不是一个符合标准的实现,不是吗?【参考方案3】:

如果您需要打印到特定的输出流,请使用 fprintf。

如果您需要显示错误消息,请使用 fprintf w/stderr

如果您正在开发命令行可执行文件并且只想向用户显示某些内容,请使用 printf。

【讨论】:

以上是关于fprintf和printf有啥区别吗?的主要内容,如果未能解决你的问题,请参考以下文章

c语言中,puts和printf函数有啥区别?

printfsprintf和fprintf

linux 操作系统下能用fprintf() 及fscanf()等函数吗?它们与c语言中的用法一样吗?

java中println和printf有啥区别

C中的sprintf和printf有啥区别? [复制]

printf(" ")和cout<<两个输出有啥区别?