"name surname midterm1"을 정렬하는 등급의 정렬 함수를 사용하려고하지만 이름 배열과 성 문자열을 임시 배열에 할당하는 방법을 생각할 수 없습니다. 어떤 아이디어? int
값을 정렬문자열을 무언가에 할당
void student_swap(struct student *x){
int z,y,temp;
char temp2[15];
for(z=0; z<10; z++){
for(y=0; y<9; y++){
if(x[y].mid1>x[y+1].mid1){
temp = x[y+1].mid1;
x[y+1].mid1 = x[y].mid1;
x[y].mid1 = temp;
strcpy (temp2,x[y+1].name);
strcpy (x[y+1].name,x[y].name);
strcpy (x[y+1].name,temp2);
strcpy (temp2,x[y+1].surname);
strcpy (x[y+1].surname,x[y].surname);
strcpy (x[y+1].surname,temp2);
} // if
} // for
} // for
} //student_swap
잘 작동하지만 strcpy
는 아무것도 실시하지 않습니다. 이 내 아웃
for (i=9;i>=0;i--){
;
printf ("%s %s %d\n",x[i].name,x[i].surname,x[i].mid1);
}
printf ("\n");
student_swap(x);
for (i=9;i>=0;i--){
;
printf ("%s %s %d\n",x[i].name,x[i].surname,x[i].mid1);
}
코드
를 넣어이며,이 내 출력murat hot 73
mehmet umur 72
idil saracoglu 55
ecem bektas 75
sevde pir 70
asli devecioglu 65
can akkurt 45
levent dogan 60
anil erdiz 30
ali durmus 40
murat hot 75
mehmet umur 73
idil saracoglu 72
ecem bektas 70
sevde pir 65
asli devecioglu 60
can akkurt 55
levent dogan 45
anil erdiz 40
ali durmus 30
strcpy는 아무 작업도 수행하지 않습니까? strcpy에 대한 테스트를 작성 했습니까? 디버거를 사용하고 있습니까? –
예, 저는 프로그래밍에 익숙하지 않고 디버거를 사용하는 방법을 모르겠습니다. 나머지 코드, 입력 및 출력을 게시하고 있습니다. – Cagurtay
aside : 'x, y, z'와 같은 변수 이름은 읽기가 어렵습니다. 특히'x'가'y'와'z'와는 다른 타입이고,'x'가 인수이고'y, z'가 자동화 인 경우 더욱 그렇습니다. 'temp'와'temp2'도 마찬가지입니다. 'temp' 자체는 괜찮지 만,'temp2' 등 (그리고 또 다른 종류)을 가지고 시작할 때, 나중에 읽는 것이 어렵고 무슨 일이 일어나고 있는지 알게됩니다. – ArjunShankar