fprintf和fscanf的功能,fprintf和fscanf的区别
关于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;
}