如何拼接字符串和数字?请高手解惑,谢谢!

NowDoIT 2011-02-16 04:06:10
前提,

char str[100+1];
long a = 1;

char str2[100+1];

我是这样完成的,
sprintf(str2,"%s%d",str1,a);

在大批量的这种拼接过程中,怎么写才是最优的?
只用sprintf会有隐患吗?


谢谢各位!
...全文
673 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
NowDoIT 2011-02-16
  • 打赏
  • 举报
回复
恩,我明白了。谢谢大家的帮忙!

结贴了,散分~!
linxren 2011-02-16
  • 打赏
  • 举报
回复
一直这么用,没遇到过问题。
Rain208 2011-02-16
  • 打赏
  • 举报
回复
我觉得最好应该在从业务逻辑上面考虑看下一个合适的缓冲区,然后使用指针操作比较快。
如果使用库函数的话,会有缓冲区越界的危险, 而且还有函数调用开销

库函数:
sprintf 和strcat

justkk 2011-02-16
  • 打赏
  • 举报
回复
这种方式就行,字符串操作很快的
另外,提醒一下,对于long应该使用%ld
sprintf(str2,"%s%ld",str1,a);
NowDoIT 2011-02-16
  • 打赏
  • 举报
回复
还是再等等吧,欢迎大家讨论!
NowDoIT 2011-02-16
  • 打赏
  • 举报
回复
谢谢大家,有时间我再自己做个测试,看看数据量的情况下哪种最好。

结贴散分~!
华时纳 2011-02-16
  • 打赏
  • 举报
回复
char str[100+1];
long a = 1;
char str2[100+1];

如果用sprintf(str2,"%s%d",str1,a);可能导致str2数组越界
如果用snprintf(str2, 100, "%s%d",str1,a); 可能导致数据不全
所以str最好空间大一点,,或者用ostringstrem
bluesky12312388 2011-02-16
  • 打赏
  • 举报
回复
int num = 10;
char str1[100] = { 0 };
char str[100] = { 0 };
itoa(num, str, 10);
strncpy(str1 + n,str,strlen(str)); //n就是你要拼接的位置
这样处理看看会不会快点。
weerweer 2011-02-16
  • 打赏
  • 举报
回复
那就snprintf
sxqinge 2011-02-16
  • 打赏
  • 举报
回复
目前用到的好像没有出现问题,另外还有个strcat;
bdmh 2011-02-16
  • 打赏
  • 举报
回复
个人感觉没问题

69,373

社区成员

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

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