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이랑 공백 사이에 있는거잖아? 근데 왜 다시 이름앞으로 돌아가서 처음부터 출력되는거야?





프갤성님들 도움점 부탁드립니다 ㅠ