realloc(), getchar() 및 일부 포인터 연산을 사용하여 메모리에 문자 배열을 저장하는 작은 프로그램을 작성하려고합니다.realloc()을 사용하여 코어 덤프를 시도하는 중
char (처음에는 NULL이고 main.c에 선언 된)에 대한 포인터를받는 "inputArray"라는 함수가 있는데 getchar() 함수가 호출 될 때까지 하나의 char로 다시 할당됩니다. '\ n'문자를 얻습니다. 함수는 정상적으로 작동하는 것처럼 보이지만 main.c에서 문자열을 다시 인쇄하려고하면 "분할 오류 (코어가 덤프 됨)"오류가 발생합니다. 나는 몇 시간 동안 찾고 있었고, 문제가있는 곳을 찾을 수 없습니다. 감사!
을 main.c :
# include "convert.h"
int main()
{
char * string = NULL;
inputArray(string);
printf("%s", string);
free(string);
return 0;
}
convert.c :
#include "convert.h"
void inputArray(char * array)
{
/*pointer to the array*/
char * ptr = NULL;
/*stores the char*/
char c = 0;
/*counter used for pointer arithmetic*/
int count = 0;
/*loop for getting chars in array*/
while ((c = getchar()) != '\n')
{
array = realloc(array, sizeof(char));
ptr = array + count;
*ptr = c;
++count;
}
/*add the null char to the end of the string*/
array = realloc(array, sizeof(char));
ptr += count;
*ptr = '\0';
}
convert.h :
#include <stdio.h>
#include <stdlib.h>
void inputArray(char * array);
c *에서 참조를 기준으로 * 에뮬레이션을 검색하고 읽습니다. –
'sizeof (char)'는 항상 1 ..... (글쎄, 아마도 너비가 2 배인 문자를 사용하는 경우 2)가 될 것이지만, 원하는 크기가 아닌 고정 된 크기입니다. – gilez