Вставить в текст заданные слова и словосочетания - 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;
}

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

  1. В данном коде на языке C осуществляется вставка заданных слов и словосочетаний в текст.
  2. Для работы кода необходимо наличие в системе GNU C компилятора версии 5.4.0 и выше.
  3. Код содержит объявление массива строк strings[] с тремя элементами: Hello, world, !.
  4. Текст, в который необходимо вставить слова и словосочетания, представлен в виде строки text[].
  5. Для хранения промежуточных результатов используется буфер buf[].
  6. В цикле происходит сопоставление символов текста с элементами массива strings[].
  7. Если символ текста равен $, то в буфер buf[] копируется следующее за ним слово или словосочетание из массива strings[].
  8. Для выравнивания символов текста, следующих за вставленным словом или словосочетанием, используется функция memmove().
  9. Вставленное слово или словосочетание добавляется в итоговый текст с помощью функции snprintf().
  10. Если символ текста не равен $, то он просто копируется в итоговый текст.
  11. В конце программы выводится итоговый текст с помощью функции puts().
  12. Для определения размера буфера buf[] используется константа MAXBUF, равная 100.
  13. В итоговом тексте слова и словосочетания, вставленные в код, будут выделены символами $.
  14. В данном коде не предусмотрена обработка ошибок.
  15. Код будет работать корректно только в том случае, если в массиве strings[] будет находиться не менее одного слова или словосочетания.
  16. Код будет работать корректно только в том случае, если в тексте будет находиться не более одного вставляемого слова или словосочетания.
  17. Если в тексте будет находиться несколько вставляемых слов или словосочетаний, то они будут добавлены в текст последовательно, разделяя друг друга пробелами.
  18. Вставка слов и словосочетаний будет производиться в указанные в коде места текста.
  19. Вставка слов и словосочетаний будет производиться без учета регистра символов.
  20. Для вставки слов и словосочетаний в текст необходимо использовать функцию snprintf() с указанием индекса буфера buf[] и длины итогового текста.

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


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

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

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