#include <stdio.h>
#include <stdlib.h>
char *getstr();
int main() {
printf(\"%s\\n\", getstr());
exit(0);
}
char *getstr() {
char *s = (char *)malloc(sizeof(char));
int i;
for (i=0; (*(s+i)=getchar())!=\'\\n\'; i++);
*(s+i) = \'\\0\';
return s;
}
포인터 공부해야 하는데....................
이런식으로 해도 되는건가
gets 는 gets(char *) 해야되서 getchar() 처럼 저렇게 해봄
free는 언제해줘야하지..
getchar를 썼다는거에서부터 망했나
stdin 에서 직접 읽어오게 해야하나
저런식으로 하면 당연히 안되지. 일단 지금 1 바이트만 동적할당해놓고 그 뒤로 막 써넣고 있는데 힙 아작남
자세히 안봤지만 눈에띄는 문제는 요거이.. char *s = (char *)malloc(sizeof(char));
sizeof(char)는 1바이트자나... 얼마나 할당할지 넣야지..sizeof(char)*10이면 10바이트... 암튼 알바중에도 공부하니 기특해보인다
얼마나 입력받을지를 몰라서... 어떻게해야되나요
2바이트를 할당받고나서 첫번째에는 입력받은 문자 두번째에는 다른 문자가 입력될 주소를 넣는건 어떨까요
얼마나 길게 입력하는지는 입력하는 사람 마음이지..ㅡ,.ㅡ 처음부터 졸라 크게 할당하던가... 할당량을 넘어가면 그때부터 일정 크기만큼 더 늘려가며 제할당 하던가..
아하 realloc이 있구나