一、
生成大文件
int main(void) {
FILE* fp = fopen("D:/数据.txt","w");
if (!fp) {
printf("打开文件失败/n");
return -1;
}
srand((size_t)time(NULL));
for (int i = 0; i < SIZE;i++) {
fprintf(fp,"%d\n",rand()% 256);
}
fclose(fp);
return 0;
}
对大文件进行排序
int main(void) {
FILE* fp1 = fopen("D:/数据.txt", "r");
FILE* fp2 = fopen("D:/数据排序.txt","w");
if (!fp1||!fp2) {
printf("打开文件失败/n");
return -1;
}
int arr[256];
memset(arr,0,sizeof(int)* 256);
for (int i = 0; i < SIZE;i++) {
int value;
fscanf(fp1,"%d\n",&value );
arr[value]++;
}
for (int i = 0; i < sizeof(arr)/sizeof(int);i++) {
for (int j = 0; j < arr[i];j++) {
fprintf(fp2,"%d\n",i);
}
}
fclose(fp1);
fclose(fp2);
return 0;
}
二、说明
利用数组的方式对大文件进行排序,效率很高,但是必须是知道数的范围,比如本次的排序文件中的数据大小是0-255,定义数组的时候,就可以定义arr[256]。