Перевод Char[] в одну строку - C (СИ)
Формулировка задачи:
ДОбрый день, подскажите пожалуйста, как можно char *a[] перевести в одну String?
спасибо
Решение задачи: «Перевод Char[] в одну строку»
textual
Листинг программы
#include <stdio.h>
#include <string.h>
/*
* принимает указатель на массив строк, количество строк, указатель на строку разделиель,
* указатель на буфер для склеенной строки и его длину, возвращает указатель на строку
* или NULL, если строка не поместится в буфер.
*/
char * join(char ** words, size_t count, const char * sep, char * buf, size_t len) {
size_t joined_len, i;
/* проверить, что склееная строка поместится в буфер */
for ( joined_len = 0, i = 0; i < count; ++i )
joined_len += strlen(words[i]);
joined_len += strlen(sep) * (count - 1) + 1;
if ( joined_len > len )
return NULL;
/* склейка стоки */
*buf = '\0';
for ( i = 0; i < count; ++i ) {
strcat(buf, words[i]);
if ( i < count - 1 )
strcat(buf, sep);
}
return buf;
}
#define COUNT 3
int main(void) {
char * words[COUNT] = { "one", "two", "three" }, buf[BUFSIZ];
printf("%s", join(words, COUNT, " / ", buf, BUFSIZ));
return 0;
}
Объяснение кода листинга программы
- В функции join производится склейка массива строк в одну строку с разделителем. Функция принимает указатель на массив строк, количество строк, указатель на строку разделитель, указатель на буфер для склеенной строки и его длину. Возвращает указатель на строку или NULL, если строка не поместится в буфер.
- В функции main создается массив из трех строк и буфер для склеенной строки.
- Вызывается функция join для склейки строк из массива words в буфер buf с разделителем
/. - Результат выводится на экран.