#c #массивы #указатели #malloc
Есть массив char str[] = "abcdef"; И динамический массив: char *dstr = (char*)malloc(sizeof(char) * N); Как скопировать str[] в dstr[] ? P.S. Заранее извиняюсь, если вопрос глупый.
Ответы
Ответ 1
Есть 3 способа, нативное копирование области памяти, специальной функцией копирования строк, посимвольный перебор массива и запись в dstr. memcpy(&str, &dstr, strlen(str) + 1); // Копирование области памяти strcpy(dstr, str); // Специальная функция для строки // Перебор массива циклом. int strsize = strlen(str) + 1; for(int i = 0; i < strsize ; i++) { dstr[i] = str[i]; } Имейте ввиду, в обоих случаях вы должны быть уверены что размер dstr больше на 1 чем длина строки str.Ответ 2
В данном случае (создание копии строки, не содержащей двоичных нулей) проще всего (а если размер исходной строки не известен, то и не менее эффективно, чем использование malloc с последующими вызовами strlen, а затем strcpy или memcpy) вызвать strdup Например: #include... char str[] = "abcdef"; char *dstr = strdup(str); Конечно, возвращаемый указатель стоит проверить на NULL (аналогично использованию malloc).
Комментариев нет:
Отправить комментарий