找回密码
 注册
关于网站域名变更的通知
查看: 488|回复: 1
打印 上一主题 下一主题

格式化io与非格式化io的对比理解

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-2-22 11:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
格式化io与非格式化io的对比理解
/ a1 K$ D# j7 k& n
" \' x$ b( L2 a5 ^+ r5 R

. u6 K; O& [9 Y0 x8 W! n, `. V! s9 ]+ x
测试函数1
#include
#include
int main()
{
int a[5]={65,66,67,68};
char value[10],i;
FILE *pf;
if(!(pf = fopen("printf.txt","w+")))
{
perror("open file:");
return -1;
}
fprintf(pf,"%d %c %d %c",a[0],a[1],a[2],a[3]);
sprintf(value,"%d %c %d %c",a[0],a[1],a[2],a[3]);
puts(value);
printf("%d",strlen(value));
fclose(pf);
return 0;
}123456789101112131415161718192021222324
这个程序的输出是:
65 B 67 D
9
从这个程序发现scanf家族对这个函数所作的事情就是将所有格式的变量以
一个文本的形式输出到我们指定的地方,不论是数组还是文件;
sprintf(value,”%d %c %d %c”,a[0],a[1],a[2],a[3]);
这个调用,
即先读到一个%d,对应a[0]是65,
就在value[0]放入6的ascii码然后在value[1]存入5的ascii码,下一个是空格就在value[2]保存空格的ascii
下一个是%c匹配a[2]就把a[2]的值直接当作一个ascii码存入value[3],以此类推….
所以最后得到字符串长度为9
游客,如果您要查看本帖隐藏内容请回复
3 F, |0 _; k/ l2 `

该用户从未签到

2#
发表于 2019-2-22 18:11 | 只看该作者
研究一下,谢谢分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-8-4 19:21 , Processed in 0.109375 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表