【发布时间】:2019-09-30 01:57:59
【问题描述】:
我正在尝试编写一个函数来使用分隔符连接字符串。这是我目前所拥有的:
int main(void) {
char * strings[] = {"A", "B", NULL};
char ** copied_strings = malloc(sizeof strings);
// Join strings with a separator
char * separator = "XXX";
size_t num_array_elements = (sizeof strings / sizeof * strings) - 1; // because last element is NULL
size_t len_separator = strlen(separator);
size_t len_strings = 0;
for (int i=0; strings[i] != NULL ;i++) len_strings += strlen(strings[i]);
size_t malloc_buffer_size = len_strings + (len_separator * (num_array_elements -1)) + 1;
printf("Separator: %s | Len Array: %lu | Len Strings: %lu | Malloc Buffer Size: %lu\n", separator, num_array_elements, len_strings, malloc_buffer_size);
char * joined_string_buffer = malloc(malloc_buffer_size);
join_strings(joined_string_buffer, copied_strings, separator);
}
void join_strings(char * joined_string_buffer, char ** src, char * separator) {
size_t sep_len = strlen(separator);
while (*src) {
size_t string_len = strlen(*src);
for (int i=0; i<string_len; i++)
*joined_string_buffer++ = (*src)[i];
for (int i=0; i<sep_len; i++)
*joined_string_buffer++ = separator[i];
*src++;
}
*joined_string_buffer = '\0';
}
但是,我似乎没有正确地将字符复制到*joined_string_buffer。我如何在这里正确地加入字符串?
【问题讨论】:
-
I'm not properly copying the characters- 你根本没有复制字符 -
@qrdl 对,是的,如果你能解释为什么它没有复制以及我做错了什么或应该做的事情,那将非常有帮助。
-
你从来没有在
copied_strings里放过任何东西,你到底想加入什么?此外,在while(*src)中没有对src或*src进行更改,你希望这个循环如何结束? -
@HotLicks 这不是真的。
-
@TagC198 恐怕你弄错了。
*src没有达到任何目标。 它永远不会改变。