1.
char * ReadUserName(void)
{
char * name = (char *)malloc(sizeof(char)*30);
printf("what's your name? ");
gets(name);
return name;
}
여기에서 name이란 포인터는 이 함수 내에서 지역적으로 선언된거 아닌가?
아무리 동적할당된 메모리를 가리키고 있더라도 어쨌든 지역변순데 return문으로 나올 수 있는거야?
2.
FILE*fp=fopen("friend.txt", "rt");
while(1)
{
ret=fscanf(fp, "%s %c %d", name, %sex, %age);
if(ret==eof)
break;
printf("%s %c %d /n", name, sex, age);
}
요런식으로 메모장에 있는 이름, 성별, 나이를 각각 뽑아서 출력하려고 하거든?
근데 만약
"김시발, m, 23 "
이런식으로 나이 뒤쪽에 공백이 하나 있으니까 내용이
김시발, m, 23
김시발, m, 23
이런식으로 두번 출력되더라고
23까지 출력하고 eof까지 안왔으니까 다시 반복문을 실행하는건 알겠는데
이때 파일 위치지시자가 23이랑 공백 사이에 있는거잖아? 근데 왜 다시 이름앞으로 돌아가서 처음부터 출력되는거야?
프갤성님들 도움점 부탁드립니다 ㅠ
포인터는 어떤 주소에 직접 값을 넣기때매, 지역변수인 name이라는 놈은 없어져도, 그놈이 가리키던 주소의 값은 그대로인 것