更改动态分配的数组的内容将引发SegFault-C

时间:2018-12-14 13:36:22

标签: c

我的目标是创建一个自动换行功能,该功能可以获取最大行宽(int width),要格式化的字符串(const char * src),并返回具有动态分配长度的字符串。

这是我必须要做的,并且当它是只修改输入字符串的void函数时,它就可以工作。

char * wordWrap(int width, const char * src) {
    int src_len       = strlen(src);
    char * return_arr = (char*) malloc(sizeof(char) * src_len);
    return_arr = (char*)src;
    int a = 0, i, j;
    for (i = 1; i <= src_len; i++) {
        j = i * width;
        if (j >= src_len) break;
        if (return_arr[j] != ' ') {
            a = find_space(return_arr, j);
            if ((j - a) > width) return NULL;
            return_arr[j], j, src_len, a);
            return_arr[a] = '\n';
            }
            else if (return_arr[j] == ' ') {
                return_arr[j] = '\n';
            }
    }
    return return_arr;
}

基本上,我使用return_arr[]进行操作的任何行(包括return)都会引发段错误,我也不十分清楚为什么。

0 个答案:

没有答案