在添加char数组之前移动它

时间:2013-11-18 02:03:24

标签: c arrays insert char shift

我想在C中的char数组的中间插入字符,但首先我想在每次添加char之前将它移到右边,这样我就不会丢失char数组中已经存在的内容(调用输入)通过覆盖。

2 个答案:

答案 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