网站后台模板论坛qq网站 直接登录
web/
2025/10/8 2:27:58/
文章来源:
网站后台模板论坛,qq网站 直接登录,wordpress微博登录,wordpress案例分析偷得几日清闲#xff0c;又因一瞬之间对蹉跎时间的愧疚#xff0c;由此而来到CSDN这个高手云集和新手求学的平台来也写上那么一篇博客。虽然自己的博客那么久不温不热#xff0c;但坚持写作#xff0c;巩固自己就好。今天要讲的是续接上一篇文章的补充与继续吧。上期文章又因一瞬之间对蹉跎时间的愧疚由此而来到CSDN这个高手云集和新手求学的平台来也写上那么一篇博客。虽然自己的博客那么久不温不热但坚持写作巩固自己就好。今天要讲的是续接上一篇文章的补充与继续吧。上期文章http://t.csdnimg.cn/HlpuYhttp://t.csdnimg.cn/HlpuY
常常会回顾努力的自己所以要给自己的努力留下足迹。
为今天努力的自己打个卡留个痕迹吧 2024.04.11 小闭 fprintf与fscanf
fpritf 将格式化数据写入流式处理 将按格式指向的 C 字符串写入流。如果 format 包含格式说明符以 % 开头的子序列则格式后面的其他参数将被格式化并插入到生成的字符串中以替换其各自的说明符。
格式
int fprintf ( FILE * stream, const char * format, ... ); 此函数所要包含的头文件如上图也是stdio.h。此函数与printf非常相似只是多了个流的选择也就是我们可以选择把要打印的东西打印到一个文件中。如下代码
#define _CRT_SECURE_NO_WARNINGS 1
#includestdio.h
int main()
{int age 18;char a[] Sam;double high 188.8;FILE* pf fopen(test0409.txt, w);if (pf NULL){perror(fopen);}fprintf(pf, 名字%s 年龄%d 身高%f, a, age, high);fclose(pf);pf NULL;return 0;
}
我们一经运行就可以打开文件目录查看我们要打印的东西是否打印到我们的文本文件 如上我们已经完成了打印。 fscanf
从流中读取数据并根据参数格式将它们存储到其他参数所指向的位置。 其他参数应指向已分配的对象该对象的类型由格式字符串中的相应格式说明符指定。 这里我们把上面创建的test0409的文件改一下便于fscanf读取改后的文本如下 int main()
{int age ;char a[10] ;float high ;FILE* pf fopen(test0409.txt, r);//现在以只读的方式打开文件if (pf NULL){perror(fopen);}fscanf( pf,%s %d %f, a,age,high);//看看是否完成读取了打印出来。printf(名字%s 年龄%d 身高%f, a, age, high);fclose(pf);pf NULL;return 0;
}
如上面代码我们现以”r“的方式打开文件然后再让fscanf读取文本中对应占位符所对应的数据并放到相应的变量中最后再把这些变量打印再屏幕上 这里身高是不完全标准的不是188.800000而是 188.800003为什么呢这是因为这与浮点数的储存是有关系的浮点数对有些数字是无法做到精确的储存的至于为什么大家可以看一下我前面写过的有关浮点数的文章http://t.csdnimg.cn/FsTOThttp://t.csdnimg.cn/FsTOT sprintf与sscanf
sprintf 将格式化数据写入字符串 使用与在 printf 上使用格式时打印的文本相同的文本组成一个字符串但内容不是被打印而是作为 C 字符串存储在 str 指向的缓冲区中。 缓冲区的大小应足够大以包含整个生成的字符串 终止 null 字符会自动追加在内容之后。 在 format 参数之后该函数至少需要与格式所需的附加参数一样多的参数。
简单点来说就是将数据打印的地方从屏幕到一个指针数组里。
格式
int sprintf ( char * str, const char * format, ... );给大家举一个简单的代码例子
这里我们现创建一个数组足够能储存等下你要打印的数据然后创建打印数据然后其它正常像printf一样打印只需前面多一个数组名指针。
int main()
{char a[100];int i 18;int j 180;char* q hello world;sprintf(a, 年龄%d 起点%s 理想身高%d,i ,q ,j);printf(%s, a);return 0;
} 如上我们打印数组a也是可以把刚刚fprintf的数据打印出来了说明我们刚刚确实用fprintf打印到数组a中了。 sscanf 从字符串中读取格式化数据 从 s 读取数据并根据参数格式将它们存储到附加参数给定的位置就像使用 scanf 一样但从 s 读取而不是标准输入 stdin。 其他参数应指向已分配的对象该对象的类型由格式字符串中的相应格式说明符指定。
int sscanf ( const char * s, const char * format, ...); 这里也是简单示例一下:
我们这里从一个数组中读取数据放到另一个数组当中。
int main()
{char a[100] {helloworld};char arr[100];sscanf(a, %s,arr );printf(%s, arr);return 0;
} printffprintfsprintfscanffscanfsscanf的对比 首先最简单的scanf和printf
所用的流规定默认是标准输出流stdout和标准输入流stdin换句话来说就是将数据输出到我们的屏幕上或从我们的屏幕读取数据。 fprintf和fscanf
所用的流可以是任何流既可以是文件也可以是 标准输出流stdout和标准输入流stdin这里所用的流没有规定我们可以自由选择需要作为参数传给函数经过这么一解释大家是否想说如果我们把 标准输出流stdout传给sprintf把标准输入流stdin传给sscanf是不是就是我们常用的printf和scanf了呢答案确实是如此所以你可以理解fprintf和fscanf只是多了选择流的权力。
这里给大家演示一下吧。
int main()
{int i 0;printf(输入一个整数);fscanf(stdin, %d, i);fprintf(stdout,%d, i);return 0;
} 这里也是从屏幕上输入再屏幕输出OK这两个函数就是这样了。 sprintf与sscanf
这两个函数就是将数据传入数组或从一个数组中读取数据简单来说就是他们操作的对象是数组而不是流。 文件缓冲区
文件缓冲区我们可以把他想象为一个水桶而我们拿这个水桶来接水而我们接水需要到一定的水量我们才拿走的不然一次拿一点水不够用需要一次一次来打水太浪费时间除非有人强制我们拿走这桶水。而我们的缓冲区便是如此。 可能大家会说可是我们之前写的数据也是一点点但还是把数据写入文件了并没有像你所说要等缓冲区满了才会放入文件中其实上面也说到一个“除非”那就是被去强制写入硬盘文件里了那什么操作会强制呢其中之一那便是fclose也就是关闭文件的操作会将缓冲区的数据输出到硬盘。还有一个fflush函数也可以刷新缓冲区也就是强制将数据输出或输入。 常常会回顾努力的自己所以要给自己的努力留下足迹。
为今天努力的自己打个卡留个痕迹吧 2024.04.11 小闭
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/88828.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!