题目:利用文件操作读取A.txt中的字符串,并将该字符串进行排序,最后将排序后的字符串保存到文件B.txt中。
思路分析:
① 需要定义两个文件指针,用来指向文件A和文件B。
② 用只读的方式打开文件A。
③ 定义一个字符数组,用来接收文件A中的字符串。
④对该字符数组进行排序(升序或者降序)。
⑤ 用只写的方式打开文件B,再将排序后的字符数组写入文件B。
⑥ 关闭文件。
(注意:本例中的a.txt和b.txt文件路径均在 E:\\File,采用冒泡排序对字符数组进行升序排列)
代码如下:
冒泡排序:
void BubbleSort(char s[],int n){
int i,j,temp; //定义变量 i,j用来遍历数组,temp用来交换元素
for(i=0;i<n;i++){ //从第1个位置开始依次遍历到最后一个元素
for(j=i+1;j<n;j++){ //从第i+1个位置开始遍历与第i个元素比较的元素
if(s[i]>s[j]){ //若前者小于后者,则交换元素位置
temp=s[i];
s[i]=s[j];
s[j]=temp;
}
}
}
}
main函数:
int main(){
FILE *fp1,*fp2; //定义指向文件的指针变量 f1,f2
char str[100]; //定义一个长度为100的字符数组str,用来保存文件a.txt的内容
fp1=fopen("E:\\File\\a.txt","r"); //打开文件a.txt的内容,使用方式为只读
fgets(str,100,fp1); //将a.txt的内容输入到str数组中
int len=strlen(str); //计算str数组的长度
BubbleSort(str,len); //使用冒泡排序对str数组的内容排序
fp2=fopen("E:\\File\\b.txt","w"); //打开文件b.txt,使用方式为只写
fputs(str,fp2); //将str的内容写入文件b.txt
fclose(fp1); //关闭文件
fclose(fp2);
return 0;
}
执行结果:
文件a.txt的内容:
进行排序后 文件B.txt的内容:
总结:本题考察文件操作与常用排序算法的使用,重点是需要熟悉文件操作函数,
打开文件:fopen("文件路径","使用方式")
读取字符串到文件:fgets(字符串名,字符串大小,文件指针名)
写入字符串到文件:fputs(字符串名,文件指针名)