我的目标是创建一个自动换行功能,该功能可以获取最大行宽(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)都会引发段错误,我也不十分清楚为什么。