我想在C中的char数组的中间插入字符,但首先我想在每次添加char之前将它移到右边,这样我就不会丢失char数组中已经存在的内容(调用输入)通过覆盖。
答案 0 :(得分:0)
我假设你使用strlen来终止数组,因为你正在使用strlen。在这种情况下,我很确定你的for循环的第一次迭代会用前面的char覆盖null字符,你似乎不会替换它。尝试运行
for( k = strlen(input) + 1; k > place42; k--)...
这应该替换您的空字符,以便正确终止您的数组。当然,你也应该确保你没有溢出阵列并写入不属于你的内存。
答案 1 :(得分:0)
为什么不使用标准C字符串函数编写泛型插入例程?像这样:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// insert "ins" into "src" at location "at"
char *insert(char *src, char *ins, int at) {
char dst[strlen(src) + strlen(ins) + 1];
strncpy(dst, src, at);
strcpy(dst + at, ins);
strcpy(dst + at + strlen(ins), src + at);
return strdup(dst);
//return strcpy(src, dst); // you could return this if you know src is long enough
}
int main(void) {
char *src = "abcdef";
char *ins = "123";
printf("%s\n", insert(src, ins, 3));
return 0;
}
打印
abc123def