저는 응용 프로그램을 개발 중입니다. 함수 중 하나는 기본적으로 fp 파일의 책 이름을 사전 순으로 정렬 한 다음 fp2 파일로 인쇄하는 함수입니다. .
알파벳순으로 책 이름 정렬
이 기능은 파일 fp에서 파일 fp2로 책의 이름을 인쇄하는 것입니다.
알파벳 순서에 따라 도서 이름을 fp2 파일로 정렬하는 것이 가능한지 알고 싶습니다.
저는 C 초보자이고 C 프로그래밍에 많은 경험이 없습니다 ... 누군가 도움이됩니까?
#include <stdio.h>
FILE *fp;
FILE *fp2;
struct book{
int key;
char name[50];
int price;
};
sort_books_file(){
struct book b;
//r: open the file for reading (read-only)
if ((fp=fopen("books.dat","r"))==NULL){
printf("Error\n");
exit(1);
}
//w: open the file for writing (write-only).
//the file is created if it doesn't exist
if ((fp2=fopen("books_sorted.dat","w"))==NULL){
printf("Error: not possible to open the file. \n");
exit(1);
}
//while end of file has not been reached
while (!feof(fp)){
fread(&b,sizeof(b),1,fp);
if(feof(fp))
{
break;
}
fwrite(&b.name,sizeof(b.name),1,fp2);
}
fclose(fp);
fclose(fp2);
}
사용'을 strcmp()'당신'을 strcmp을 사용할 수 있습니다 – Gopi
를 정렬하는()'또는'stricmp()'문자열을 비교,하지만 여전히 실제 정렬 알고리즘을 필요로합니다. 대부분의 초보자는 단순하기 때문에 버블 정렬을 사용하지만 실제 시나리오에서는 비효율적으로 비효율적입니다. 'books.dat'에 들어있는 샘플을 제공 할 수 있습니까? 줄 당 하나의 문자열입니까, 쉼표로 구분 된 값 (CSV) 파일입니까? – DevNull
\ 00 \ 00 \ \ 00pfbiaegumcqgveplxkxt \ 00 \ B3i \ F6 \ DB \ 00 \ 00 \ 87 \ 00 \ 00 \ B9 00 \ 00 \ 00 \ 00 \ 00haaddflukpemtm \ 00lxkxt \ 00 \ B3i \ F6 \ DB \ \ 00 \ 00 \ ED \ 00 \ 00 \ DE \ 00 \ 00 \ 00 \ 00 \ 00qnhgcfraymewunyv \ 00kxt 00 \ B3i \ F6 \ DB \ \ 00 \ 00J \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00anuedqtnbjqsyxbbfuc \ 00 \ 00 \ B3i \ F6 \ DB \ 00 \ 00 \ 93 \ 00 \ 00리터 \ 00 \ 00 \ 00 \ 00 \ 00fwebpjewkttqwkkmovdhvbk 00 \ DB \ 00 \ 00 \ 00 \ 00 \ 88 % \ \ 00 \ 00 \ 00 \ 00 \ 00mpkrwjwayg \ 00qwkkmovdhvbk \ 00 \ DB \ 00 \ 00b 인 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00qkaewns \ 00yg \ 00qwkkmovdhvbk 00 \ DB \ 00 \ 00 \ 00 \ 00 \ 81 \ 00 \ \ 00 \ 00 \ 00 \ 00ummduqsnbmkk \ 00kkmovdhvbk \ 00 \ DB \ 00 \ 00L \ 00 \ 00; CSV 제 생각에는 (책의 이름은 임의의 문자열입니다) – Zombie