Копирование из одного массива в другой - C (СИ)

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

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

Знаю два варианта копирования из одного массива в другой 1. С помощью функции memcpy
Листинг программы
  1. char src[6] = "Hello";
  2. char dst[6] = "";
  3. memcpy(dst, src, 6);
2. С помощью цикла подставлять значение из одного массива в другой
Листинг программы
  1. void copy(char to[], char from[])
  2. {
  3. int i = 0;
  4. while ((to[i] = from[i]) != '\0') i++;
  5. }
  6. char to[6];
  7. char *from = "Hello";
  8. copy(to, from);
Какой из способов наиболее эффективный и почему? Так же интересует почему изменения в функции copy над переменными to и from влияют на значения переменных с такими же именами которые находятся за пределами этой функции? Ведь в Си аргументы передаются по значению, если явно не использовать указатель? И еще пара вопросов: 1. Почему при создании

указателя

можно не указывать размер массива а сразу заполнять его символами в двойных кавычках? Например char *from = "Hello"; Чем отличается такая запись от явного указания длины с массивом? Правильно ли я понимаю, что запись char *from = "Hello"; является упрощенной версией как если бы мы использовали malloc? 2. Если явно не написать \0 в конце строки, то добавляется ли этот символ автоматически?

Решение задачи: «Копирование из одного массива в другой»

textual
Листинг программы
  1. struct array
  2. {
  3.     char a[256];    
  4. };
  5.  
  6. struct array m_cpy(struct array arr)
  7. {
  8.     return arr;
  9. }
  10.  
  11. int main(void)
  12. {
  13.     struct array a = {{0}}, a2;
  14.    
  15.     a2 = m_cpy(a);
  16.    
  17.     return 0;
  18. }

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

  1. Структура array объявлена с полем a типа char с размером 256 байт.
  2. Функция m_cpy принимает в качестве аргумента структуру array и возвращает ее.
  3. В функции main объявлены две переменные типа array: a и a2.
  4. Инициализируется переменная a значением {{0}} (все 256 байт равны 0).
  5. Переменная a2 инициализируется результатом вызова функции m_cpy с аргументом a.
  6. Программа возвращает 0, что означает успешный конец работы.

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


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

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

5   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы