如何在C中的字符串中间插入一个字符?

时间:2016-09-12 15:39:38

标签: c

如何在字符串中间插入字符。 例如,我有

char aa = "C:\\Users\\Ruby\\Desktop";

我想将其更改为

aa = "C:\\\\Users\\\\Ruby\\\\Desktop";

这有内置功能吗?如果不是,我该怎么做?感谢。

1 个答案:

答案 0 :(得分:1)

这在c中是不可能的,因为字符串是一个分配的内存,它以顺序方式包含字符,这意味着如果要在某个索引处添加字符串或字符,则需要分配更多内存(在如果你分配的内存完全是字符串+ null终止字符的大小),并将所有字符移动到大于我们添加的字符/字符串的索引。

最直接的方法是分配一个足够大的新内存块以包含字符串,并开始逐字节复制,当你到达'/'时,只需向目标添加一个额外的'/'字符串。

另外,正如一些人所提到的,这是无效的c。 当你声明一个char你基本上分配一个字节大小的内存段,不足以包含一个完整的字符串(一个大于一个字符串的字符串),如果它是一个数组,那么你将无法初始化它这样,正确的方法就是这样做 char *c = "C:/...";
分配一个更大的内存段,并从char指针复制到它。