파일 입출력 질문 드립니다
창의적
질문 제목 : 바이너리 파일 입출력wb를 해서 .dat파일을 만든 후에 다시 rb로 불러들려와서 콘솔창에 출력할려는데
멈춰버리네요질문 내용 : 일단 이 프로그램은 연결리스트를 사용해서 성적 관리 프로그램을 만든거에요.
파일 입출력 말고는 다 정상동작 합니다.
student_linkedlisttype list;
student_node data; 이것 둘다는 구조체입니다.#include stdio.h
#include stdlib.h
#include string.h
#include head.h
#include head2.h
#include head3.h
#include head4.hint main(void)
{
student_linkedlisttype list;
student_node data;
int choise; file *fp = null; init_list(&list);
data.link = list.head; //fp = fopen(test.dat, wb);
fp = fopen(test.dat, rb);
fread(&data, sizeof(student_node), 3, fp);
if(fp == null) return; re:
print_menu();
choise = printf_menu_input(); switch(choise)
{
case 1:
{
choise_input_type(&list);
goto re;
break;
}
case 2:
{
choise_sort_type(&list);
goto re;
break;
}
case 3:
{
choise_display_type(&list);
goto re;
break;
}
case 4:
{
choise_delete_type(&list);
goto re;
break;
}
case 5:
{
exit_program();
break;
}
default : break;
}
//fwrite(&data, sizeof(student_node), list.length, fp);
fclose(fp);
return 0;
}이렇게 되버리네요.
왜그럴까요 ?
디버깅 해보니까 포인터 참조 문제인거같은데 ㅠ
그리고 노드의 갯수 경우 rb 할때 fread 에서 블록 갯수로 할려고 하는데
wb 할때는 list.length 하면 되지만 fread 할때에는 어떻게 블록 갯수를 구해야 하나요?
-
반월
아 link부분엔 데이터 없습니다
-
sin
link는 Node를 서로 연결만 해주고있는것 아닌가요? 상관없을것 같아요
link부분에 데이터가 있어요? 구조체 구조가 어떻게 되어있는지 잘 모르것네 ..;; -
보늬
그럼 link부분의 데이터는 어떻게 되는 건가요
/////////
게다가 fread 할때 새로운 노드를 add시켜주면서 거기에 데이터를 집어넣어야 하는건가요 ? -
두힘
아 링크드리스트로 하셨다고 하셨는데 그러면 link부분이랑 data부분 있겠네요. 네 Student_Node 안에 있는 데이터부분이 Student_Data_Node라면 여기로 데이터를 읽어와서 출력하는것이 맞습니다.
-
라별
네 input에서 Student_Node 구조체에 있는 Student_Data_Node 라는 또 다른 구조체에 데이터를
입력 시켜주고 있습니다. 아 그럼 Student_Data_Node 이걸로 했어야 하는건가요
////////////////////////////////////////////////////////
그럼 Student_Node 의 ilnk 값을 못 읽어와서 쓸모없을텐데 -
착히
choise_input_type(&list); 이 함수내에서 data를 콘솔출력 해주고 계신거죠?
-
목향
1로 바꾸니까 아무것도 출력 안해주네요 콘솔창에
-
삐용삐용
일단 fread부분을 fread(&data,sizeof(Student_Node),1,fp); 로 바꾸어 보세요
-
큰모듬
음... 그렇다면 data = data.link로 노드를 바꿔줘야한다는 건가요?
-
달님
잘 모르겠지만 일단 보시면 Student_Node형 변수 data에 Student_Node형 크기의 데이터 3개 분량을 구겨 넣고 있는데 일단 이게 문제인것 같네요..(fread함수는 1,2,3,4 4개의 인자를 받는데 결과적으로 4에서 1번으로 2번크기의 데이터를 3번개 만큼 읽어오는 함수입니다.)
1만큼의 저장 공간을 가진 변수에 3만큼을 쑤셔넣고 계신다는..;;
그리고 읽을때 원하는 부분까지 읽는 동작은 저같은경우는 #과 같은 break역할을 할
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2692451 | 이 문제좀 풀어주세요 ^^ | 게자리 | 2025-04-23 |
2692424 | 2차원배열 자료입력질문이요! (1) | 똘끼 | 2025-04-22 |
2692401 | 유닉스안에서 C언어를 이용한 명함 만들기 입니다; 이해안가는 부분이있네요 | 2gether | 2025-04-22 |
2692374 | 고수님들 댓글 마니부탁해요!!! (2) | 엄지 | 2025-04-22 |
2692343 | scnaf에 자꾸 선언을 참조하라는데;; (8) | 도래 | 2025-04-22 |
2692282 | 도스상에서 생성된 exe파일에 press~ 뜨게 하기 (4) | 회사원 | 2025-04-21 |
2692256 | scanf("%*c"); ㅠㅠ 고수님들 | 거북이 | 2025-04-21 |
2692230 | 하노이탑 질문입니다. (1) | 미쁘다 | 2025-04-21 |
2692210 | 정보 올림피아드 문제인데.. 풀이 과정이 궁금합니다.(재귀함수) (5) | 물티슈 | 2025-04-20 |
2692144 | C언어와 리눅스에 대한 질문입니다. | 싴흐한세여니 | 2025-04-20 |
2692114 | 컨텍스트 스위칭하는데 걸리는 시간 측정.. | YourWay | 2025-04-19 |
2692086 | 간접참조 연산자, 증감연산자 질문이용! (2) | 블랙캣 | 2025-04-19 |
2692056 | 주석좀 달아주세요. 몇개적엇는데 몇개만달아주세요. (2) | DevilsTears | 2025-04-19 |
2691978 | 진수 쉽게 이해하는법... (3) | 지지않는 | 2025-04-18 |
2691949 | getchar() 한 문자를 입력받는 함수 질문 | 채꽃 | 2025-04-18 |
2691919 | 배열 정렬 및 합치기 질문입니다. | 사과 | 2025-04-18 |
2691845 | c언어왕초보 질문이 있습니다........ | 루나 | 2025-04-17 |
2691815 | void add(int num); 함수... (4) | 살랑살랑 | 2025-04-17 |
2691756 | 명령 프롬프트 스크롤바가 없어요 | 두메꽃 | 2025-04-16 |
2691725 | 자료구조에 관련해서 질문이 있어 글을 올립니다. | 누리알찬 | 2025-04-16 |