txt파일에서 읽어온 값 계산(합)
아쿠아리우스
질문 제목 : txt파일에서 읽어온 값 계산(합)txt파일에서 읽어온 값 계산(합)질문 내용 :
#includestdio.h
int total(int, int, int, int, int);
double average(int, int);
int main()
{
file *fp;// 파일포인터 변수선언
int i=0, cnt=0;
char name[20][100];
int score[10][100], student_num[15][100], tot[50][100];
fp = fopen(sungjuk.txt, r);
if(fp==null)
{
printf(파일에 열리지 않았습니다.\n);
return 0;
}
while(!feof(fp))
{
fscanf(fp, %s %d %d %d %d %d %d, &name[i], &student_num[i][0], &score[i][1], &score[i][2], &score[i][3], &score[i][4], &score[i][5]);
cnt++;
i++;
}
i=0;
while(!feof(fp))// 파일포인터가 파일의 끝을 가르킬때까지 반복
{
tot[i][6] = score[i][1] + score[i][2] + score[i][3] + score[i][4] + score[i][5];
i++;
}
// 파일에서 읽어와 배열에 저장되어 있는 데이터를 화면에 출력
for(i=0; icnt; i++)
{
printf(%s %d %d %d %d %d %d %d\n, name[i], student_num[i][0], sungjuk[i][1], sungjuk[i][2], sungjuk[i][3], sungjuk[i][4], sungjuk[i][5], tot[i][6]);
}
fclose(fp);// 파일을 사용완료했으므로 파일포인터를 닫음
return 0;
}
int total(int a, int b, int c, int d, int e)
{
int tot;
tot = a + b + c + d + e;
return tot;
}
double average(int tot, int num)
{
double avg;
avg = tot / num;
return avg;
}
total 함수는 저 점수들을 합쳐서 나오게 하려고 한건데
자꾸 저렇게 쓰레기 값이 나오네요 ㅠㅠ 어딜 어떻게 고쳐야하죠?
txt파일은 첨부해놨어요
-
밝은빛누리예
흐.. 자꾸 쓰레기값이 나오길래 메모리가 적어서 그런가 ㅜ 그럴리 없는데.. 하고 쓸데없이 크게 잡았네요.. 고치겠습니당
-
멈짓체
그리고 쓸데없이 배열값을 크게 잡으셨는데..
필요한 메모리만큼만 쓰도록 연습하세요;
tot 변수는 너무 아깝네요.. -
후유
카운트변수를 while 조건에 i=cnt 해놓으니까 됐어요!!!!! 진짜 감사합니다 ㅠㅠ!!!
반성하고 열심히 공부할게용 ㅠㅠㅠㅠ -
설아
방법으로 읽을때마나 카운트를 새는 변수를 만들너 그만큼
다음 반복문이 작동하도롣 하거나 파일을 가르키는 변수를
처음으로 옮기면.되겠네요.. -
죄암죄암
하도 오래되서 기억 잘 안나지만 파일스트림을 생성하면
그 파일을.가르키는 변수가 처음을 가리키다가
읽으면 읽은 많큼 카르키고 다읽고 끝에 닿으면 feof를 반환하죠
즉 그 가리키는 놈이 끝을 가르키고 있어서 다음 while문은 바로
false를 반환해서 연산을 안해요 -
나길
1번째에선 끝까지 읽었을뿐인데 그 뒤에선 그 이상의 배열이 추가가 안되는건가요ㅜ?
-
도래솔
두번째 while문이 실행안되는 것 같아요.
1번째 while문에서 끝에 도달했으니까요
제가 확인이 불가능해서 그럼 예상만 하네요 ㅋ