Перво-наперво, вы не должны приводить возвращаемое значение malloc
(в любом случае в C), поскольку оно может скрывать ошибки.
Во-вторых, вам никогда не нужно умножать на sizeof(char)
поскольку он всегда гарантированно равен единице - это засоряет ваш код.
И, что касается самого вопроса, вы можете использовать:
memcpy (temp, buff, BUFFSZ);
, чтобы скопировать весь массив символов.
Я предполагаю, что это то, что вам нужно, потому что вы не упоминаете об обработке "строк" C, только массив символов.
Если вы действительно если обрабатывает строки C, strcpy
будет нормально работать в этом случае, при условии:
- у вас есть место в конце буфера для завершающего нулевого байта;и
- вы на самом деле вставили туда нулевой байт.
Например, этот небольшой фрагмент отлично работает:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main (void) {
// Two buffers.
char buff1[4];
char *buff2 = malloc (4);
if (buff2 == NULL) {
puts ("No memory!");
return 1;
}
// Populate first buffer.
buff2[0] = 'p';
buff2[1] = 'a';
buff2[2] = 'x';
buff2[3] = '\0';
// Transfer and print.
strcpy (buff1, buff2);
puts (buff1);
// Free and exit.
free (buff2);
return 0;
}