C语言中,如何在一字符串中插入字符?

例如,输入A1lm2lg3n4a后,要求在每个数字前加上s,即为:As1lms2lgs3ns4a... 例如,输入A1lm2lg3n4a后,要求在每个数字前加上s,即为:As1lms2lgs3ns4a 展开
 我来答
潮蕊果画
2019-01-14 · TA获得超过3.6万个赞
知道大有可为答主
回答量:1.2万
采纳率:24%
帮助的人:940万
展开全部
c[5]只有5个空间无法完全容纳字符串"hello",因为这个字符串需要占用6个字符位置。
所谓自动加'\0'的问题是:你写在双引号中的,编译程序会认为是字符串,会自动为你添加上一个字符串结尾符号0,而不是运行时添加的。
如果你用debug方式运行程序,调试环境自动会把你开设的char
a[5];进行初始化0的工作,这时你再将第1位初始化时,后面的0仍存在就好象字符串结尾已经存在了。如果非debug运行则没有这个初始化工作。
如果你用字符方式初始化应当写:char
c[6]={
'h','e','l','l','o','\0'
};
希望对你能有所帮助。
emoingIJ
推荐于2018-03-08 · TA获得超过234个赞
知道小有建树答主
回答量:216
采纳率:0%
帮助的人:0
展开全部
#include "stdafx.h"
#include "conio.h"

char *myfun(char *strA, char *strB, char strC)//strA用户数据,strB返回数据, strC插入字符
{

int m = 0;
if (strA == NULL)
return NULL;
int n = strlen(strA);

for (int i=0; i<n; i++)
{
strB[m]=strA[i];
if (strA[i]>= 0x30 && strA[i]<= 0x39 )
{
strB[m+1] = strC;
m += 1;
}
m += 1;
}
strB[m] = '\0';
return strB;
}

main()
{

char p[] = "2m1f3d2de4wer5";
int k = strlen(p);
char *buff = (char *)malloc(k*2+1);
char *p1 = myfun(p, buff, 's');
printf("%s\n", p1);
free(buff);

}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
adah_wu
2008-05-28 · 超过31用户采纳过TA的回答
知道答主
回答量:74
采纳率:100%
帮助的人:67.8万
展开全部
找一个正则表达式库吧(如PCRE)。自己从头实现的话没有意义。

有这样的库之后,下面这个正则表达式(具体语法可能需要根据不同的库作调整)可以完成你需要的操作:

s/([0-9])/s\1/g
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式