一个关于sprintf的问题。看看这个结果怎样分析!

firecityplans 2009-08-13 05:48:06
#include <stdio.h>

void main( void )
{
char buffer[200], s[] = "computer", c = 'l';
int i = 35, j;
float fp = 1.7320534f;

/* Format and print various data: */

printf( "Output:\n%s\ncharacter count = %d\n", buffer, j );

j = sprintf( buffer, "\tString: %s\n", s );
printf( "Output:\n%s\ncharacter count = %d\n", buffer, j );

j += sprintf( buffer + j, "\tCharacter: %c\n", c );
printf( "Output:\n%s\ncharacter count = %d\n", buffer, j );

j += sprintf( buffer + j, "\tInteger: %d\n", i );
printf( "Output:\n%s\ncharacter count = %d\n", buffer, j );

j += sprintf( buffer + j, "\tReal: %f\n", fp );
printf( "Output:\n%s\ncharacter count = %d\n", buffer, j );
}













结果如下:

Output:
烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫
烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫
烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫?
character count = 0
Output:
String: computer

character count = 21
Output:
String: computer
Character: l

character count = 35
Output:
String: computer
Character: l
Integer: 35

character count = 50
Output:
String: computer
Character: l
Integer: 35
Real: 1.732053

character count = 71
Press any key to continue


...全文
209 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
whg01 2009-08-22
  • 打赏
  • 举报
回复
j += sprintf( buffer + j, "\tReal: %f\n", fp ); j的值不断增加,sprintf是从buffer + j开始写入,相当于追加buffer 字符串的长度。
printf( "Output:\n%s\ncharacter count = %d\n", buffer, j ); 而输出是从buffer的开头开始输出。
gql1123 2009-08-21
  • 打赏
  • 举报
回复
哈哈。buf没有初始化。
Darkneece 2009-08-21
  • 打赏
  • 举报
回复
烫的编码是0xCCCC

0xCC是断点中断int3的机器码,VC Debug的时候把内存初始化成0xCC便于调试。
huangyiyun 2009-08-19
  • 打赏
  • 举报
回复


狗东西,这家伙在C中出现的频率超级高.
mstlq 2009-08-19
  • 打赏
  • 举报
回复
很正常的结果啊╮(╯_╰)╭
沙漠里的海豚 2009-08-19
  • 打赏
  • 举报
回复
没搞明白楼主的意图呢
cw2004100021124 2009-08-19
  • 打赏
  • 举报
回复
烫是没有初始化,在vc下,没有初始化就是-52,两个-52就是烫了。
受教了,以前知道是没有初始化,但是不知道具体的原因。
jixingzhong 2009-08-13
  • 打赏
  • 举报
回复
sprintf 的返回值,是sprintf输出到数组的字符串长度,注意不是字符串的总长度,而是sprintf构造部分的长度
firecityplans 2009-08-13
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 acrazer 的回复:]
不知道lz想说什么问题,
一切正常
[/Quote]


我是说要分析一下出来的结果。就是那个buffer不断变化的值和j的值的变化。特别是j的值的变化!它是怎样计算的?
KWHOK 2009-08-13
  • 打赏
  • 举报
回复
不知道lz想说什么问题,
一切正常
lijian22500 2009-08-13
  • 打赏
  • 举报
回复
烫是没有初始化,在vc下,没有初始化就是-52,两个-52就是烫了。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧