질문있습니다.
char Filename[40]={NULL}; ->전역변수로 놓았습니다.
기존의 파일이 생성되고 이제 후에 삽입을 하는 부분입니다.
int initroot()
{
FILE*fp = NULL;
fopen_s(&fp, Filename, "w");
root = NULL;
root = (struct info*)malloc(sizeof(info));
printf("Name: ");
scanf_s("%s", &root->Name, sizeof(40));
//fwrite(&root->Name, strlen(root->Name), strlen(root->Name), fp);
//fprintf(fp, "Name: %s\n", &root->Name);
// printf("root%s", &root->Name);
printf("Age: ");
scanf_s("%d", &root->Age, sizeof(4));
fprintf(fp, "Age: %d\n", root->Age);
root->right = NULL;
root->left = NULL;
fclose(fp);
return root;
}
일단 트리를 공부중이긴한데. 파일 입출력을 사용하여, 정보들을 입력해서 기록하도록 하려고 하던 도중
printf("Name: 이부분에서 이제 scanf_s(~~~~ 부분에서 5글자 이상 입력을하면 무한 루프에 빠집니다.)
4글자는 허용이 되구요. 구조체에 넉넉히 자리를 줬는데... 이게 왜그런걸까요??? 이유를 모르겠습니다.
1. '\0'과 NULL을 헷갈리지 말 것. 2.
1. '\0'과 NULL을 헷갈리지 말 것.
2. sizeof(40) == sizeof(4) == sizeof(int)
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://cinsk.github.io/cfaqs/
답변 감사드립니다.
제가 여태 잘못 알고 있었군요..
sizeof(40) 하면 40 byte가 잡히는 것으로 이해를 했습니다.
답변 감사드리고, 좋은 하루 되십시오.^^
댓글 달기