C语言中,如何在一字符串中插入字符?
例如,输入A1lm2lg3n4a后,要求在每个数字前加上s,即为:As1lms2lgs3ns4a...
例如,输入A1lm2lg3n4a后,要求在每个数字前加上s,即为:As1lms2lgs3ns4a
展开
3个回答
展开全部
c[5]只有5个空间无法完全容纳字符串"hello",因为这个字符串需要占用6个字符位置。
所谓自动加'\0'的问题是:你写在双引号中的,编译程序会认为是字符串,会自动为你添加上一个字符串结尾符号0,而不是运行时添加的。
如果你用debug方式运行程序,调试环境自动会把你开设的char
a[5];进行初始化0的工作,这时你再将第1位初始化时,后面的0仍存在就好象字符串结尾已经存在了。如果非debug运行则没有这个初始化工作。
如果你用字符方式初始化应当写:char
c[6]={
'h','e','l','l','o','\0'
};
希望对你能有所帮助。
所谓自动加'\0'的问题是:你写在双引号中的,编译程序会认为是字符串,会自动为你添加上一个字符串结尾符号0,而不是运行时添加的。
如果你用debug方式运行程序,调试环境自动会把你开设的char
a[5];进行初始化0的工作,这时你再将第1位初始化时,后面的0仍存在就好象字符串结尾已经存在了。如果非debug运行则没有这个初始化工作。
如果你用字符方式初始化应当写:char
c[6]={
'h','e','l','l','o','\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);
}
#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);
}
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
找一个正则表达式库吧(如PCRE)。自己从头实现的话没有意义。
有这样的库之后,下面这个正则表达式(具体语法可能需要根据不同的库作调整)可以完成你需要的操作:
s/([0-9])/s\1/g
有这样的库之后,下面这个正则表达式(具体语法可能需要根据不同的库作调整)可以完成你需要的操作:
s/([0-9])/s\1/g
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询