질문이 있습니다.(__)
struct input{
char *str;
input* link;
};
void main(){
input *head;
head = (input*)malloc(sizeof(input));
input *flag;
char s[20];
char *p;
p=s;
gets(p);
head->str = p;
head->link = NULL;
flag = head;
p=s;
gets(p);
input *n = (input*)malloc(sizeof(input));
n->link =NULL;
n->str = s;
flag->link = n;
flag = n;
}
대충 이런식인데... 둔번입력받고 두번 출력하면 마지막에 입력받은 것만 두번 나오거든요.
문제를 생각해보니까 p=s; 에서 같은 메모리를 가르키고 있으니까
첫 입력값이 두번째에 입력된 값으로 겹쳐지기때문인가요???
그리고 head->str 에서 이것에 문자열을 입력하려면 malloc 사용해줘야하나요? head->str = malloc(~~~); 이런식..
이해가 넘안되서..도와주십쇼 형님들.
포인터나 문자열 고수님들 있으신가요.. 네이트온 친구해서 서로 얘기좀 했으면 한느데.ㅠㅠㅠ
우리가 친구사이가 되는거는 아직인 것 같아,,
겹쳐지니까,,같은곳을 가르키고 있으니까 맞고,, 직접 str에 입력하려면 malloc해줘야지,, 지금처럼이면 안해도되고,, 웬만하면 배열같은건 초기화해주자...
만약 겹치지 않게 할려면?? 위에처럼 str에 malloc 사용해서 공간 확보해주고 거기다 복사??해야 되겠죠?
복사를하던, str에 직접 입력받던 ..알아서 하시지요...
묻지말고 해보셈 실제로 됨.
실제로 해봤죠 좀더 확실하게 알고싶어서...
여튼 답변 감사합니다.
함수를 나눠서 만들면되잖아
flag = n 이거 뺴버령