먼저 오류를 숨길 수 있으므로 반환 값 malloc
(C에서 어쨌든)을 캐스팅하지 마십시오.
두 번째로 은 sizeof(char)
으로 늘릴 필요가 있습니다. 항상 1을 보장하므로 코드가 막히게됩니다.
그리고, 실제 질문에, 당신은 사용할 수 있습니다
memcpy (temp, buff, BUFFSZ);
전체 문자 배열을 복사합니다.
문자 배열 만 처리하는 것에 대한 언급이 없기 때문에 원하는 것으로 가정합니다.
실제로 경우 는 처리 C 문자열 strcpy
제공이 경우 잘 작동한다 있습니다
- 는 종료 0 바이트에 대한 버퍼의 끝에서 공간을 가지고;
- 실제로는 이 (가)에 0 바이트를 입력했습니다.
예를 들어,이 작은 조각은 잘 작동 :
#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;
}
무엇을하려합니까? 또한 C 표준에 따르면 char은 1 바이트와 같으므로'* sizeof (char) '는 필요하지 않습니다. –
버퍼를 분석하고 0 터미네이터를 검색 할 필요가 없으므로'memcpy'를 사용하십시오. – valdo
strcpy가 작동하지 않는다고 생각하는 것에 대한 자세한 정보를 제공해야합니다 (예 : 예상 한 것을 보여주지 않은 printf 등) – dasblinkenlight