printf与fprintf函数的区别
来源:互联网 发布:化学方程式制作软件 编辑:程序博客网 时间:2024/04/29 12:56
fprintf 函数的功能是: Print formatted data to a stream
格式化输出数据到流,这个流并没有特指是文件流。
关于 stdin、stdout、stderr 的说明如下:
By default, standard input is read from the keyboard, while standard output and standard error are printed to the screen
默认情况下,标准输入从键盘读取,同时标准输出和标准错误会打印到屏幕。
在控制台测试 :
void main( void )
{
fprintf(stderr, "%s:%d", __FILE__, __LINE__);
system("pause");
}
会在屏幕显示当前文件的路径和fprintf语句所在的行数。
printf是标准输出流的输出函数,用来向屏幕这样的标准输出设备输出,而fprintf则是向文件输出,将输出的内容输出到硬盘上的文件或是相当于文件的设备上
printf是有缓冲的输出,fprintf没有缓冲
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
===================================================
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
sprintf 是个变参函数,定义如下:
int sprintf( char *buffer, const char *format [, argument] ... );
除了前两个参数类型固定外,后面可以接任意多个参数。而它的精华,显然就在第二个参数:
格式化字符串上。
printf 和sprintf 都使用格式化字符串来指定串的格式,在格式串内部使用一些以“%”开头的
格式说明符(format specifications)来占据一个位置,在后边的变参列表中提供相应的变量,最终
函数就会用相应位置的变量来替代那个说明符,产生一个调用者想要的字符串。
格式化数字字符串
sprintf 最常见的应用之一莫过于把整数打印到字符串中....
格式化读写函数fscanf和fprintf
fscanf函数,fprintf函数与前面使用的scanf和printf 函数的功能相似,都是格式化读写函数。 两者的区别在于 fscanf 函数和fprintf函数的读写对象不是键盘和显示器,而是磁盘文件。这两个函数的调用格式为: fscanf(文件指针,格式字符串,输入表列); fprintf(文件指针,格式字符串,输出表列); 例如:
fscanf(fp,"%d%s",&i,s);
fprintf(fp,"%d%c",j,ch);
用fscanf和fprintf函数也可以完成例10.6的问题。修改后的程序如例10.7所示。
[例10.7]
#include<stdio.h>
struct stu
{
char name[10];
int num;
int age;
char addr[15];
}boya[2],boyb[2],*pp,*qq;
main()
{
FILE *fp;
char ch;
int i;
pp=boya;
qq=boyb;
if((fp=fopen("stu_list","wb+"))==NULL)
{
printf("Cannot open file strike any key exit!");
getch();
exit(1);
}
printf("\ninput data\n");
for(i=0;i<2;i++,pp++)
scanf("%s%d%d%s",pp->name,&pp->num,&pp->age,pp->addr);
pp=boya;
for(i=0;i<2;i++,pp++)
fprintf(fp,"%s %d %d %s\n",pp->name,pp->num,pp->age,pp->
addr);
rewind(fp);
for(i=0;i<2;i++,qq++)
fscanf(fp,"%s %d %d %s\n",qq->name,&qq->num,&qq->age,qq->addr);
printf("\n\nname\tnumber age addr\n");
qq=boyb;
for(i=0;i<2;i++,qq++)
printf("%s\t%5d %7d %s\n",qq->name,qq->num, qq->age,
qq->addr);
fclose(fp);
}
与例10.6相比,本程序中fscanf和fprintf函数每次只能读写一个结构数组元素,因此采用了循环语句来读写全部数组元素。 还要注意指针变量pp,qq由于循环改变了它们的值,因此在程序的25和32行分别对它们重新赋予了数组的首地址。
- printf与fprintf函数的区别?
- printf 与 fprintf函数的区别
- printf与fprintf函数的区别
- printf与fprintf函数的区别?
- printf与fprintf函数的区别
- printf与fprintf的区别
- fprintf()、sprintf()、printf()、fwrite()函数的用法与区别
- fprintf()、sprintf()、printf()、fwrite()函数的用法与区别
- fprintf 与printf区别
- printf、sprintf与fprintf 的区别
- printf 与 fprintf、sprintf函数、fscanf与scanf函数 的区别
- printf和fprintf的区别
- printf、fprintf、sprintf的区别
- fwrite与fprintf区别、printf与fprintf区别
- 【转】fwrite与fprintf区别、printf与fprintf区别
- fwrite与fprintf区别、printf与fprintf区别
- fwrite与fprintf区别、printf与fprintf区别
- fprintf sprintf printf函数用法及区别
- parse,tryparse区别
- HTML 字符实体 < >: &等
- 完美卸载,清理Oracle11g步骤
- 汉字Unicode编码表(最小值0x4e00,最大值0x952f)
- ViewPager的Adapter中视图重用
- printf与fprintf函数的区别
- 上海市社区公共户新生儿出生登记
- IT人才异军突起 有招网引领业界精英
- Could not create the view: An unexpected exception was thrown.问题解决
- 断开SVN连接
- 单例模式——C++实现线程安全的单例 .
- 搭建maven私有仓库(Archiva)
- 刎渤破怯苯斜空古加栽谈习饺蜒收
- JAVA序列化