창피한 질문이긴 하지만...ㅠㅠ 도와주세요..!
알
질문 제목 : 질문 요약 :
만들어져 있는 data.txt 파일의 내용을 파일포인터로읽어들여서 sorting 하는것.
data.txt 내용은 이렇습니다.
10
홍길동 10 20 30
갑을녀 90 80 70
동길동 30 50 60
이한의 10 10 10
김홍도 90 90 90
허재민 90 80 90
곽우동 10 30 20
우길상 10 10 10
이삼사 60 30 20
오육칠 10 10 10
그런데 sorting을 하면 10까지 같이 sorting이 되어서 이렇게 나옵니다.
질문 내용 :
코드내용은 이렇습니다.
#include stdio.h
#include string.h
#include stdlib.h
#define max (10)
void sort(int total[],char *name[], int a[], int b[], int c[], double d[], int n)
{
int totaltmp;
int atmp;
int btmp;
int ctmp;
double dtmp;
char *nametmp;
int i, j;
for(i = 0; i n-1; i++){
for(j = 0; j n-i-1; j++){
if(total[j] total[j+1]){
totaltmp = total[j];
total[j] = total[j+1];
total[j+1] = totaltmp;
nametmp = name[j];
name[j] = name[j+1];
name[j+1] = nametmp;
atmp = a[j];
a[j] = a[j+1];
a[j+1] = atmp;
btmp = b[j];
b[j] = b[j+1];
b[j+1] = btmp;
ctmp = c[j];
c[j] = c[j+1];
c[j+1] = ctmp;
dtmp = d[j];
d[j] = d[j+1];
d[j+1] = dtmp;
}
}
}
}
main()
{
char **name;
int *kor;
int *math;
int *eng;
int *total;
double *ave;
char buffer[bufsiz];
int nstudent;
int i;
file *infile;
char filename[max];
printf(type filename: );
scanf(%s, filename);
fopen_s(&infile,filename,r);
nstudent = 0;
while(!feof(infile)) {
int k,m,e;
fscanf_s(infile,%s %d %d %d,buffer,_countof(buffer),&k,&m,&e);
nstudent++;
}
fclose(infile);
name = (char **)malloc(sizeof(char *) * nstudent);
kor = (int *)malloc(sizeof(int) * nstudent);
math = (int *)malloc(sizeof(int) * nstudent);
eng = (int *)malloc(sizeof(int) * nstudent);
total = (int *)malloc(sizeof(int) * nstudent);
ave = (double *)malloc(sizeof(double) * nstudent);
fopen_s(&infile,filename,r);
for(i = 0; i nstudent; i++) {
fscanf_s(infile,%s %d %d %d,buffer,_countof(buffer),&kor[i],&math[i],&eng[i]);
name[i] = _strdup(buffer);
}
fclose(infile);
for(i = 0; i nstudent; i++) {
total[i] = kor[i] + math[i] + eng[i];
ave[i] = total[i] / 3.0;
}
printf( 성명 국어 수학 영어 총점 평균\n);
for(i = 0; i nstudent; i++) {
printf(%s %3d %3d %3d %3d %4.1f\n,name[i],kor[i],math[i],eng[i],total[i],ave[i]);
}
printf(=== sorted result===\n);
sort(total, name, kor, math, eng, ave, 10);
printf( 성명 국어 수학 영어 총점 평균\n);
for(i = 0; i nstudent; i++) {
printf(%s %3d %3d %3d %3d %4.1f\n,name[i],kor[i],math[i],eng[i],total[i],ave[i]);
}
}
뭐가 잘못된걸까요??ㅠㅠ
-
늘빈
10을 제외한 테이터를 출력하시는 거라면 커서의 위치를 옮기는 문법적 요소가 있습니다. 검색하면 바로 나올 것 같네요.