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 `
|