如何在字符串前后添加内容?

沭水河畔 2010-10-27 07:34:18


char message[50]={0};
char str[]=", better life!";
strcpy(message,str);
sprintf(message,"Better city%s",message);
//puts(strcat(message,"Better city"));

比如上面的代码(sprintf所在行),一般是如何处理的呢?最好不要再使用其它临时变量或数组。
...全文
945 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
bo_00 2010-10-28
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 tianweishuiguo 的回复:]

sprintf(message,"%sBetter city%s",str1,str2);
[/Quote]

就用sprintf多简单,会用printf就会用 string printf
somebody 2010-10-28
  • 打赏
  • 举报
回复
我觉得就是个连接字符串而已,就是哪个作为目的串哪个为源串而已!
justkk 2010-10-28
  • 打赏
  • 举报
回复
这种一般用临时变量倒一下,为什么不能使用临时变量呢,代码清晰,可读性强
如果不使用临时变量,估计你得在message本身做手脚,先把部分内容拷贝到后面的空闲部分,再倒腾回来
这样有什么收益呢?
估计会被后续维护代码的人骂的。。
crazy_yangyf 2010-10-27
  • 打赏
  • 举报
回复

char* p ="better life!";
ostringstream ssMessage;
ssMessage << "Better city %s" <<p;
string strMessage = "";
strMessage = ssMessage .str();
小魔菇 2010-10-27
  • 打赏
  • 举报
回复
snprintf
hz_yck 2010-10-27
  • 打赏
  • 举报
回复
我搞错了,请无视上面的回复
hz_yck 2010-10-27
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 lishanchao 的回复:]

引用 6 楼 dskit 的回复:
C/C++ code
char message[50]={0};
char str[]=", better life!";
sprintf(message,"Better city%s",str);

抱歉各位,我给的代码可能没说明白,简言之,需求是这样的:
C/C++ code

char message[50]=", better life……
[/Quote]

char message[50]=", better life!";
strcpy(message + strlen(message),"Better city%s");
cheng_fengming 2010-10-27
  • 打赏
  • 举报
回复
个人感觉还是string类型做这些工作很方便。
沭水河畔 2010-10-27
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 dskit 的回复:]
C/C++ code
char message[50]={0};
char str[]=", better life!";
sprintf(message,"Better city%s",str);
[/Quote]
抱歉各位,我给的代码可能没说明白,简言之,需求是这样的:

char message[50]=", better life!";
sprintf(message,"Better city%s",message);
//puts(strcat(message,"Better city"));
dskit 2010-10-27
  • 打赏
  • 举报
回复
    char message[50]={0};
char str[]=", better life!";
sprintf(message,"Better city%s",str);
無_1024 2010-10-27
  • 打赏
  • 举报
回复
路过 学习ing 感觉那个sprintf的用法怪怪的
东大坡居士 2010-10-27
  • 打赏
  • 举报
回复
sprintf(message,"%sBetter city%s",str1,str2);
GoonYangXiaofang 2010-10-27
  • 打赏
  • 举报
回复


char * pre, *post, *mid, *result;

strcat(pre, mid);
strcat(pre, post);
strcpy(result, pre);

// 不要越界

aaajj 2010-10-27
  • 打赏
  • 举报
回复
sprintf(message,"Better city%s",message);
是很危险的,也是有问题的,message像其本身赋值,会造成循环赋值

换个变量名就可以了
sprintf(message, "---%s%s---", str1, str2);
GrayMole2010 2010-10-27
  • 打赏
  • 举报
回复
1、如果在后面增加内容,直接使用strcat;
2、如果在前面增加内容,
//先把原串内容后移strlen(dst),空出位置;
for(int i=strlen(src)+1; i>=0; i--)
{
src[i+strlen(dst)] = src[i];
}
//把目标串放到空出位置;
for(int i=0;i<strlen(dst); i++)
{
src[i] = dst[i];
}
3、上述操作请注意,src分配的内存足够,不要越界。

69,369

社区成员

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

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