要在char型数组前面加一个字符,用什么方法比较好?

时间:2021-09-04 06:09:10
小弟想在一个char型数组前加一个字符。例如

char my_array [50] = "None";
我想在None前面加一个字符':'使其变成“:None”.

我现在使用的方法实在太蠢了,我自己都看不下去了,我想一个能有什么函数可以直接完成此功能吧。请教一下大家,谢谢!!

14 个解决方案

#1


为什么不用string呢?
string 很方便就能实现

#2


string str = "None";
 str = ":"+ str;

#3


用CString 也可以
还有也可以用字符连接函数

#4


这是别人的程序,我修改一下,他原来用的就是char型,我现在修改的方法也是通过string来实现的,不过这样要转成string,然后再转回来。好麻烦,我记得有个什么字符连接函数应该是可以直接实现的,这个函数叫什么名字?

#5


作为内建数据类型,char本身没有提供相应的插入机制,lz要想解决的话就参考一楼的用string库吧
至于CString,MS的东西,好像非标准

#6


这个函数叫什么名字?
---------------------
strcat()

#7


但是该函数好像没法进行转化的
更何况string已经提供了转换机制

#8


是啊,刚才看了一下。看来还是只能用string来帮下忙了。 麻烦就麻烦吧。再等等,看看还有没有别人的意见,等下接贴。谢谢各位

#9


my_array = strcat(":",my_array);

#10


loongee的办法九成九会出错(不出错算运气好)。

一种可行的方法是(只插入一个字符):
char my_array [50] = "None";
memmove(my_array + 1, my_array, strlen(my_array));
my_array[0] = ';';

#11


memmove(my_array + 1, my_array, strlen(my_array) + 1);
我也错了 -_-||b

#12


>>>my_array = strcat(":",my_array);
上面的程序是很危险的,,,因为":"指针一般都存在const数据区,
所以程序的最好结果是core dump。

char my_array [50] = "None";

/*这样*/
ASSERT(sizeof(my_array) >= strlen(my_array) +2 );
memmove(my_array+1, my_array, strlen(my_array) +1);
my_array[0] = ':';


/*如果用C++的话,考虑使用string类来做字符串处理*/

#13


milksea(航航 | 啥都不会咋办)说错了~~~~~~~
我的那句不是九成九会出错,而是编译根本就通不过,呵呵!!!
误人子弟了,罪过罪过~~~~~~~~~~~~~~

#14


感谢各位,结贴

#1


为什么不用string呢?
string 很方便就能实现

#2


string str = "None";
 str = ":"+ str;

#3


用CString 也可以
还有也可以用字符连接函数

#4


这是别人的程序,我修改一下,他原来用的就是char型,我现在修改的方法也是通过string来实现的,不过这样要转成string,然后再转回来。好麻烦,我记得有个什么字符连接函数应该是可以直接实现的,这个函数叫什么名字?

#5


作为内建数据类型,char本身没有提供相应的插入机制,lz要想解决的话就参考一楼的用string库吧
至于CString,MS的东西,好像非标准

#6


这个函数叫什么名字?
---------------------
strcat()

#7


但是该函数好像没法进行转化的
更何况string已经提供了转换机制

#8


是啊,刚才看了一下。看来还是只能用string来帮下忙了。 麻烦就麻烦吧。再等等,看看还有没有别人的意见,等下接贴。谢谢各位

#9


my_array = strcat(":",my_array);

#10


loongee的办法九成九会出错(不出错算运气好)。

一种可行的方法是(只插入一个字符):
char my_array [50] = "None";
memmove(my_array + 1, my_array, strlen(my_array));
my_array[0] = ';';

#11


memmove(my_array + 1, my_array, strlen(my_array) + 1);
我也错了 -_-||b

#12


>>>my_array = strcat(":",my_array);
上面的程序是很危险的,,,因为":"指针一般都存在const数据区,
所以程序的最好结果是core dump。

char my_array [50] = "None";

/*这样*/
ASSERT(sizeof(my_array) >= strlen(my_array) +2 );
memmove(my_array+1, my_array, strlen(my_array) +1);
my_array[0] = ':';


/*如果用C++的话,考虑使用string类来做字符串处理*/

#13


milksea(航航 | 啥都不会咋办)说错了~~~~~~~
我的那句不是九成九会出错,而是编译根本就通不过,呵呵!!!
误人子弟了,罪过罪过~~~~~~~~~~~~~~

#14


感谢各位,结贴