#include <stdio.h>
int main()
{
char temp[100]; // 문자열을 입력 받기 위한 충분한 크기의 문자 배열을 선언한다.
char *str[5]; // 포인터배열
for(int i=0; i<5 i++)
{
printf("문자열을 입력해 주세요 : ");
gets(temp); // 문자열을 입력 받는다.
str = (char *)malloc(strlen(temp) + 1); // 문자열의 길이를 계산하여 크기에 맞게 기억공간을 동적할당
strcpy(str[i], temp); // 문자열을 복사한다.
}
for(i=0; i<5; i++)
{
printf("%s\n", str[i]);
}
for(i=0; i<5; i++)
{
free(str[i]); //할당한 메모리 영역 해제
}
return 0;
}
위는 제가 작성한 것이 아니라, 책이나 인터넷에서 사용하는 동적 char 할당을 보면서, 느끼는 사항입니다.
계속 보면서 느끼는 것이지만, C는 동적인 문자열쓰기가 아닌 것 같다고 느끼는 중입니다.
배열로 메모리 공간 겁나크게 할당해 놓고 다시 포인터로 옮겨도 배열의 메모리는 살아있는데,
그럼 포인터를 사용할 이유가 없지 않나요? 처음부터 그냥 배열(걍 배열이던, 2중배열이던 ) 겁나크게 놓고 사용하면 될 것 같은데요.
구조는 이해하지만, 방법이 없나 하는 생각을 해봅니다. 역시... 안되겠지요. 걍 중얼거려봅니다.