目录
- 前言
- fprintf 函数
- sprintf 函数
前言
<fgets gets fputs puts 函数>
前面验证了fgets fputs gets puts 是否把新行符存入缓存的结论
并且都得出了结果。
这次继续验证 fprintf sprintf 是否是行缓存??
fprintf 函数
先用之前的方法试试 输出
#include<stdio.h>int main()
{FILE *fd=NULL; fd = fopen("g.c","w+"); if(fd==NULL){printf("fopen is error\n");return -1;}printf("fopen is sueecssed\n"); return 0;}
换成 fprintf 试试
#include<stdio.h>int main()
{FILE *fd=NULL;int i = 111;fd = fopen("a.c","w+");if(fd==NULL){printf("fopen is error\n");return -1;}fprintf(fd,"fopen is sueecssed is %d\n",i);flcose(fd);return 0;}
fprintf 函数 fd 相当于是一个存放的地址 而这个地址又是g.c 的
所以在g.c可以看到 输出的内容。
没加 while(1);有数据
怎么证明他是不是行缓存呢 满足行缓存的要求都去掉 这里把 换行符去掉 并在后面加 while(1);
#include<stdio.h>int main()
{FILE *fd=NULL;int i=111;fd = fopen("a.c","w+");if(fd==NULL){printf("fopen is error\n");return -1;}fprintf(fd,"fopen is sueecssed is %d",i);while(1); fclose(fd);return 0;}
并没数据 因为没把缓存写入内核态. 证明了它就行缓存。
sprintf 函数
#include<stdio.h>int main()
{int a=10;char readbuff[128]={0};fprintf(readbuff,"fopen is sueecssed is %d",a);printf("%s\n",readbuff);return 0;}
spinrtf 只是一个存放字符的函数 还需要 printf 把他的字符输出
readbuff 是一个存放的地址
如果 加了 while(1);呢
#include<stdio.h>int main()
{int a=100;char readbuff[128];fprintf(readbuff,"fopen is sueecssed is %d\n",a);printf("%s",readbuff);while(1);return 0;}
加了while (1);还是会输出 证明了 它是行缓存。