2015-01-29 5 views
-3

구조체 배열이 있습니다. 각 구조체에는 char 배열과 int가 있습니다.null이 아닌 종료 문자 배열의 내용을 다른 문자 배열에 복사

typedef struct { 
    int id; //Each struct has an id 
    char input[80]; //Each struct has a char array 
    } inpstruct; 

inpstruct history[10]; //Array of structs is created 

I는 사용자가 문자 \n 다음 단어를 입력하는 사용자 입력

char inputBuffer[80]; 

포함 된 다른 문자 배열을 가지고있다. 예를 들어 inputBuffer은 3 자, 즉 'l''s''\n'을 포함합니다.

나는 내가 사용 시도 history[index].input

inputBuffer에있는 모든 문자를 복사 할 :

strcpy(history[index].input, inputBuffer); 

그러나 inputBuffer 이후

가 null이 작동하지 않습니다 종료되지 않습니다. inputBuffer의 모든 문자를 history[index].input으로 복사하려면 어떻게해야합니까?

+0

'길이 = 읽기 (STDIN_FILENO, INPUTBUFFER, 80) memecpy하기 원하는,' – user3646037

+1

정의'가 work'하지 않습니다 –

+2

'strcpy'는 C 스타일 0, 그것을 짐작한다 - 끝나는 문자열. 원시 메모리를 복사하고자하므로'memcpy '를 사용하십시오. 'memcpy (history [index] .input, inputBuffer, sizeof inputBuffer);를 사용하여 – Deduplicator

답변

0

당신은

memcpy(history[index].input, inputBuffer, sizeof(inputBuffer)*sizeof(inputBuffer[0])); 
+0

'경고 : 배열 함수 매개 변수의 sizeof 매개 변수는 'char []'대신 'char *'의 크기를 반환하고 객체 malloc : *** 오류는 객체 0x10ae0d074에 대해 오류를 반환합니다 : 해제 될 포인터가 할당되지 않았습니다. *** 디버깅을 위해 malloc_error_break에 중단 점 설정' – user3646037

+0

코드를 더 표시해야합니다. 'sizeof' 연산자는 내가 보여준 것과 똑같습니다. 그러나 요소가 함수로 전달되는 포인터 인 경우 'sizeof'는 작동하지 않으며 (오류 메시지에서 제안하는 것임) 크기를 하드 코딩해야합니다. FYI - malloc 오류는 공유 한 코드를 다루는 데 아무런 의미가 없으며 이전에 'malloc()'에 의해 할당되지 않은 포인터를 해제하려고 시도하고 있음을 나타냅니다. – user590028

+0

예 inputBuffer가 memcpy가 수행되는 void 메소드로 전달 중입니다. 나 또한 하드 코딩 된 크기는 80하지만 난 여전히 그것을 실행할 때 malloc 오류가 발생합니다 – user3646037