Вставить в текст заданные слова и словосочетания - C (СИ)
Формулировка задачи:
Обнаружено, что в тексте пропущены некоторые слова и словосочетания. Эти слова и словосочетания заданы отдельным списком в том порядке, в котором они должны быть вставлены в текст. Места вставки отмечены в тексте символом "$". Скорректировать текст.Помогите пожалуйста,буду крайне благодарен.За ранее спасибо
Ну пожалуйста,я вообще не особо имею представления как выглядеть должен код,у меня только предположения есть.
Спасите!
Решение задачи: «Вставить в текст заданные слова и словосочетания»
textual
Листинг программы
//gcc 5.4.0 #include <stdio.h> #include <string.h> #define MAXBUF 100 int main(void) { char *strings[] = {"Hello","world","!"}; char text[MAXBUF] = "$ bbb$ aaa mde$"; char buf[MAXBUF]; size_t i=0,j=0,k=0; for (;text[i];) { if (text[i] == '$') { size_t len = strlen(strings[k]); ++i; memmove(&text[i+len], &text[i], &text[strlen(text)]-&text[i]); j+=snprintf(&text[j], MAXBUF-i, "%s", strings[k++]); i += len; } else { text[j++] = text[i++]; } } puts(text); return 0; }
Объяснение кода листинга программы
- В данном коде на языке C осуществляется вставка заданных слов и словосочетаний в текст.
- Для работы кода необходимо наличие в системе GNU C компилятора версии 5.4.0 и выше.
- Код содержит объявление массива строк
strings[]
с тремя элементами:Hello
,world
,!
. - Текст, в который необходимо вставить слова и словосочетания, представлен в виде строки
text[]
. - Для хранения промежуточных результатов используется буфер
buf[]
. - В цикле происходит сопоставление символов текста с элементами массива
strings[]
. - Если символ текста равен
$
, то в буферbuf[]
копируется следующее за ним слово или словосочетание из массиваstrings[]
. - Для выравнивания символов текста, следующих за вставленным словом или словосочетанием, используется функция
memmove()
. - Вставленное слово или словосочетание добавляется в итоговый текст с помощью функции
snprintf()
. - Если символ текста не равен
$
, то он просто копируется в итоговый текст. - В конце программы выводится итоговый текст с помощью функции
puts()
. - Для определения размера буфера
buf[]
используется константаMAXBUF
, равная 100. - В итоговом тексте слова и словосочетания, вставленные в код, будут выделены символами
$
. - В данном коде не предусмотрена обработка ошибок.
- Код будет работать корректно только в том случае, если в массиве
strings[]
будет находиться не менее одного слова или словосочетания. - Код будет работать корректно только в том случае, если в тексте будет находиться не более одного вставляемого слова или словосочетания.
- Если в тексте будет находиться несколько вставляемых слов или словосочетаний, то они будут добавлены в текст последовательно, разделяя друг друга пробелами.
- Вставка слов и словосочетаний будет производиться в указанные в коде места текста.
- Вставка слов и словосочетаний будет производиться без учета регистра символов.
- Для вставки слов и словосочетаний в текст необходимо использовать функцию
snprintf()
с указанием индекса буфераbuf[]
и длины итогового текста.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д