Перевод 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;
}

Объяснение кода листинга программы

  1. В функции join производится склейка массива строк в одну строку с разделителем. Функция принимает указатель на массив строк, количество строк, указатель на строку разделитель, указатель на буфер для склеенной строки и его длину. Возвращает указатель на строку или NULL, если строка не поместится в буфер.
  2. В функции main создается массив из трех строк и буфер для склеенной строки.
  3. Вызывается функция join для склейки строк из массива words в буфер buf с разделителем /.
  4. Результат выводится на экран.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.2 из 5
Похожие ответы