Каждое слово заключить в кавычки - C (СИ)

Узнай цену своей работы

Формулировка задачи:

не пойму как а точнее какой функцией (на Си)

Решение задачи: «Каждое слово заключить в кавычки»

textual
Листинг программы
#include <stdio.h>
#include <string.h>
 
int main()
{
 char *strings [] = {"Alex","Bob","Max","Alexander"};
 char **out_buf;// массив преобразованных строк
 int ks,i,l;    // ks - количество строк
                // l  - длина входной i-ой строки
 ks=sizeof(strings)/4;
 
 out_buf = (char**)malloc(sizeof(char*)*ks);
 for(i=0; i < ks; i++)
 {
  l = strlen(strings[i]);
  out_buf[i] = (char*)malloc(sizeof(char)*(l+2));
  strcpy(&out_buf[i][1],strings[i]);
  *out_buf[i] = '"';
  out_buf[i][l+1] = '"';
  out_buf[i][l+2] = '\0';
 }
 
 for(i = 0; i < ks; i++)
 {
  printf("%s    ",out_buf[i]);
 }
 
 free(out_buf);
 for(i=0; i < ks; i++)
 {
  free(out_buf[i]);
 }
 
 return 0;
}

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

  1. Объявлен массив строк strings[] с четырьмя элементами: Alex, Bob, Max, Alexander.
  2. Создается массив указателей out_buf для хранения преобразованных строк.
  3. Переменная ks инициализируется значением, равным количеству элементов в массиве strings[], деленному на 4 (что дает количество строк).
  4. Выделяется память под массив указателей out_buf с помощью malloc.
  5. В цикле for для каждого элемента массива strings[] выполняются следующие действия:
    • Инициализируется переменная l значением длины текущей строки.
    • Выделяется память под строку в массиве out_buf с помощью malloc.
    • С помощью strcpy копия строки из массива strings[] записывается в out_buf начиная с индекса 1 (что позволяет добавить кавычки в начале и в конце строки).
    • В начало строки в out_buf добавляется кавычка.
    • В конец строки в out_buf добавляется кавычка и символ нулевого символа '\0'.
  6. В цикле for для каждого элемента массива out_buf выводится на экран с помощью printf.
  7. Все выделенные памяти освобождаются с помощью free.

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

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