诚心求教,C语言数组写入文本文件出现乱码咋么回事? 程序我也发了,求修改
题目;采用顺序存储结构,利用随机数生成3000个1~10000之间的数据,并分别通过希尔排序和快速排序算法对生成的3000个无序数据进行排序。
我调试过,随机数产生与排序都没问题,就输出问题:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int partition(int *b,int low,int high) //
{
int key;
key=b[low];
while(low<high){
while(low<high && b[high]>=key) --high;
b[low]=b[high];
while(low<high && b[low]<=key) ++low;
b[high]=b[low];
}
b[low]=key;
return low;
}
void sort(int *c,int low,int high) //
{
int pivotloc;
if(low<high){
pivotloc=partition(c,low,high);
sort(c,low,pivotloc-1);
sort(c,pivotloc+1,high);
}
}
void quicksort(int *d)
{
sort(d,0,2999);
}
void main()
{
FILE *p1,*p2;
int i,a[3000];
printf("所有数据存在文本文档中\n");
srand(time(NULL));
for( i =0;i<300;i++ )
{
a[i]=rand()%10000;
}
p1=fopen("随机数列:","wt");
for(i=0;i<3000;i++)
fwrite(&a[i],sizeof(int),1,p1);
if(fwrite(&a[i],4,1,p1)!=1)
printf("文件写入错误\n");
fclose(p1);
quicksort(a);
p2=fopen("排列后数列:","wt");
for(i=0;i<3000;i++)
fwrite(&a[i],4,1,p2);
if(fwrite(&a[i],4,1,p2)!=1)
printf("文件写入错误");
fclose(p2);
}