fprintf和fscanf的功能,fprintf和fscanf的区别

http://www.itjxue.com  2023-01-14 08:04  来源:未知  点击次数: 

关于C/C++中,fprintf和fscanf的问题!

二者在c语言和c++中的功能是相同的。

1

printf。

c语言的标准格式化输出函数。其调用格式为

int

printf(char

*

format_string,

...);

参数个数不定,依据第一个参数格式字符串中的格式字符,决定后续有多少个参数。

printf会按照格式字符串中的指定的规则,将自身及后续参数值输出到标准输出。

返回值为实际输出变量的个数。

2

fprintf。

c语言的标准格式化输出到文件函数。调用格式为

int

fprintf(file

*fp,

char

*

format_string,

...);

与printf类似,也是根据格式字符串将后续参数输出,不过目标不是固定的标准输出,而是由fp指定的文件。

所以,fprintf的第一个参数设置为stdout时,与printf功能相同。

3

以上两个函数,在c++中同样支持,使用方法相同。不过c++中更推荐使用流对象cout来执行输出。同时使用流对象类fstream来执行文件的操作。

C语言中fread,fwrite和fscanf,fprintf的区别,什么是格式化数据

fread:是读取数据

fwrite:是写入数据

1.函数功能

用来读写一个数据块。

2.一般调用形式

fread(buffer,size,count,fp);

fwrite(buffer,size,count,fp);

3.说明

(1)buffer:是一个指针,对fread来说,它是读入数据的存放地址。对fwrite来说,是要输出数据的地址。

(2)size:要读写的字节数;

(3)count:要进行读写多少个size字节的数据项;

(4)fp:文件型指针。

注意:1 完成次写操(fwrite())作后必须关闭流(fclose());

2 完成一次读操作(fread())后,如果没有关闭流(fclose()),则指针(FILE * fp)自动向后移动前一次读写的长度,不关闭流继续下一次读操作则接着上次的输出继续输出;

3 fprintf() : 按格式输入到流,其原型是int fprintf(FILE *stream, const char *format[, argument, ...]);其用法和printf()相同,不过不是写到控制台,而是写到流罢了。注意的是返回值为此次操作写入到文件的字节数。如int c = fprintf(fp, "%s %s %d %f", str1,str2, a, b) ;str1:10字节;str2: 10字节;a:2字节;b:8字节,c为33,因为写入时不同的数据间自动加入一个空格。

4.fscanf 和 scanf 相似 :当能正常读入数据时, fscanf 返回读入数据的个数,否则返回 EOF 。

fscanf和fprintf

// 从文件句柄fp中获取2个int型数据,分别赋值给a,b

fscanf(fp,"%d%d",a,b);

// 将a,b的值写入文件句柄fp所指的文件,"%d %d"是书写格式.

fprintf(fp,"%d %d",x,y);

二者类似于不带前缀f的scanf和printf,只是因为前者是和文件进行交互,而后者是和终端进行交互.

fprintf()函数和fscanf()函数会使文件指针向后移动吗?

fprintf()函数和fscanf()函数会使文件指针向后移动。

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

其中,FILE*stream为文件指针,const char*?format以什么样的格式输出,[argument]为输入列表。

例子:

#include?stdio.h

#include?stdlib.h

#include?process.h

FILE*?stream;

int?main(void)

{

????int?i?=?10;

????double?fp?=?1.5;

????char?s[]?=?"this?is?a?string";

????char?c?=?'\n';

????stream?=?fopen("fprintf.out",?"w");

????fprintf(stream,?"%s%c",?s,?c);

????fprintf(stream,?"%d\n",?i);

????fprintf(stream,?"%f\n",?fp);

????fclose(stream);

????system("typefprintf.out");

????return?0;

}

屏幕输出:

this?is?a?string

10

1.500000

函数名:?fscanf

功 能:?从一个流中执行格式化输入,fscanf遇到空格和换行时结束,注意空格时也结束。这与fgets有区别,fgets遇到空格不结束。

返回值:整型,成功返回读入的参数的个数,失败返回EOF(-1)。

例子:

#include?stdlib.h

#include?stdio.h

int?main(void)

{

int?i;

printf("Input?an?integer:");

/*read?an?integer?from?the?standard?input?stream*/

if(fscanf(stdin,"%d",i))

printf("The?integer?read?was:%d\n",i);

else

{

fprintf(stderr,"Error?reading?an\

integer?from?stdin.\n");//返回EOF如果读取到文件结尾。

exit(1);

}

return0;

}

(责任编辑:IT教学网)

更多

推荐数据库文章