저장 파일 값이 이상하게 나와요
고독
파일 저장 까지는 되는데 저장된 txt 파일을 열어보면 학번하고 이름은 제대로 나오는데 점수부분에서 값이 이상하게 나와요 예를 들어 45를 입력하면 438211이라는 이런값이 나와요 점수를 입력하는 국어, 영어, 수학 부분이 잘 못된거 같은데 뭐가 잘못된 건지 모르겠네요. 수정 부탁드립니다질문 내용 :
int loadlist() {
file* fp;
int i = 0;
// 파일열기 파일이 없으면 새로만들기
if((fp = fopen(data.txt, rt)) == null) {
// 파일이 존재하지 않으면 새로 파일을 만들고 0을 리턴
if((fp = fopen(data.txt, wt)) == null) {
printf(파일 생성실패);
exit(1);
}
fclose(fp);
return 0;
}
// 파일 descriptor를 맨 처음으로 옮긴다.(리와인드 )
rewind(fp);
// 파일에서 한 라인씩 읽어서 각 변수에 넣는다.
while(!feof(fp))
fscanf(fp, %s\t%s\t%d\t%d\t%d, class1[i].stu_num, class1[i].stu_name, &class1[i].kor, &class1[i].eng, &class1[i].mat);
// 파일 종료
fclose(fp);
// 리스트의 개수를 리턴
return i;
}
// 업데이트된 파일 저장
void savelist()
{
file* fp;
// 임시 파일을 만든다.
if((fp = fopen(data.tmp, wt)) == null) {
printf(파일 에러);
exit(1);
}
// 리스트를 임시파일에 기록한다.
for(i = 0; i count; i++) {
fprintf(fp, %s\t%s\t%d\t%d\t%d\n, class1[i].stu_num, class1[i].stu_name, &class1[i].kor, &class1[i].eng,&class1[i].mat);
}
// 임시파일을 닫는다.
fclose(fp);
// 이전의 리스트파일을 삭제
unlink(data.txt);
// 임시파일을 리스트파일로 이름 변경
rename(data.tmp, data.txt);
}
-
딸기우유 2023-10-15
아.. ㅋㅋ.. 제가 설명을 잘못 이해해서 그런거네요.. 수다님 말처럼 하니 잘되요.. 감사합니다.^^
-
캐릭터 2023-10-15
그래도 여전히 점수에서 값이 이상하게 나와요.. 왜 그럴까요?..ㅠ.ㅠ
-
한무릎 2023-10-15
scanf나 fscanf함수에서는 \\t, \\n 등을 사용하지 않습니다.
그리고 점수의 출력에서 %d로 출력할 때에는 &를 사용하지 않습니다.