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