Соединить три строки через пробел - C (СИ)

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

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

Есть несколько строк:str1="Today" str2="is" str3="05.05.16". Используя строковые функции получите новую строку str="Today is 05.05.16". И создать массив, элементами которого будут адреса каждого символа новообразованной строки. Решить задачу через указатели. на Си. Спасибо!

Решение задачи: «Соединить три строки через пробел»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
int main(void)
{
  const char* str1 = "Today";
  const char* str2 = "is";
  const char* str3 = "05.05.16";
  const char* stringDisplayFmt = "%s%c%s%c%s";
  const char* arrDisplayFmt = "%s%02lu%s%p%c%c%c";
 
  char** arr = NULL;
 
  char* iterator = NULL;
  char* s = malloc(128);
 
  sprintf(s, stringDisplayFmt, str1, ' ', str2, ' ', str3);
 
  printf("%s\n", s);
 
  arr = malloc(strlen(s) * sizeof(*arr));
 
  iterator = s;
  while (*iterator != '\0')
  {
    arr[iterator - s] = iterator;
    iterator++;
  }
 
  iterator = s;
  while (*iterator != '\0')
  {
    printf(arrDisplayFmt, "a[", (size_t)(iterator - s), "] 0x", &arr[iterator - s], ' ', *arr[iterator - s], '\n');
    iterator++;
  }
 
  free(arr);
  free(s);
 
  return 0;
}

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

  1. Программа подключает необходимые библиотеки для работы с памятью и строками.
  2. Объявляются константы строк, которые будут объединяться.
  3. Объявляется переменная stringDisplayFmt, которая содержит формат строки для вывода объединение трех строк с пробелами между ними.
  4. Объявляется переменная arrDisplayFmt, которая содержит формат строки для вывода объединение трех строк с пробелами между ними и дополнительной информацией о памяти.
  5. Объявляется указатель на массив строк arr.
  6. Объявляется указатель на первый элемент массива iterator.
  7. Выделяется память под строку s, которая будет использоваться для формирования итоговой строки.
  8. Строка s заполняется с помощью функции sprintf с использованием формата stringDisplayFmt и констант строк.
  9. Выводится итоговая строка с помощью функции printf.
  10. Выделяется память под массив строк arr с использованием размера строки s.
  11. Указатель iterator инициализируется значением указателя s.
  12. В цикле, пока не достигнут конец строки s, элементы массива arr заполняются указателями на соответствующие символы строки s.
  13. Указатель iterator увеличивается на единицу после каждого заполнения элемента массива arr.
  14. В цикле, пока не достигнут конец строки s, выводится информация о каждом элементе массива arr с использованием формата arrDisplayFmt.
  15. Выделяется память под строку s освобождается.
  16. Выделяется память под массив строк arr освобождается.
  17. Программа возвращает ноль, что означает успешное завершение работы.

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


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

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

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