知识点
1.fseek()设置光标位置。
freek(p,5,SEEK_SET); //文件指针,偏移量,参考点。是将指针正着移动到第五个位置
freek(p,5,SEEK_END); //文件指针,偏移量,参考点。是将指针逆着移动到第五个位置
2.ftlee()返回光标距离开始的位置
3.rewind()是将光标移动到开始的位置
4.fscanf(),读取内容遇到空格结束
5.fprintf();从终端输入内容到文本文档
实例:
从两个不同文件中读取两串字符,讲这两串字符合并,并按照字母顺序进行排序,写入到第三文件中。
#include <stdio.h>
int main(){
test();
return 0;
}
void test(){
FILE *p = NULL;
char str[10]; //用来存放A文档中的字符
char str_01[10]; //用来存放B文档中的字符
char str_02[20]; //用来存放C文档中的字符
//A文件
p = fopen("A.txt","w+"); //创建并打开A文本文档
printf("请输入5个字符:\n");
for(int i=0;i<5;i++){ //手动输入五个字符
scanf("%c",&str[i]);
}
for(int i=0;i<5;i++){
fprintf(p,"%c",str[i]); //通过fprintf写入到A文本文档中
printf("%c\n",str[i]);
}
getchar();
//B文件
p = fopen("B.txt","w+"); //创建并打开B文本文档
printf("请输入6个字符:\n");
for(int i=0;i<6;i++){
scanf("%c",&str_01[i]); //手动输入六个字符
}
for(int i=0;i<6;i++){
fprintf(p,"%c",str_01[i]); //通过fprintf写入到A文本文档中
printf("%c\n",str_01[i]);
}
//C文件
p=fopen("C.txt","w"); //创建并打开C文本文档
for(int i=0;i<5;i++){
fprintf(p,"%c",str[i]); //将A文档中的内容写进C文档中
}
for(int i=0;i<6;i++){ //将B文档中的内容写进C文档中
fprintf(p,"%c",str_01[i]);
}
fclose(p);
p=fopen("C.txt","r"); //以只读方式打开C文档
printf("交换前的字符:");
for(int i=0;i<11;i++){
str_02[i]= fgetc(p);
printf("%c",str_02[i]); //将C文档中的内容从文本中提到内存中
}
//交换
char t;
printf("\n");
printf("交换后的字符:");
for(int i=0;i<11;i++){ //在内存中对C文本中的内容进行排序
for(int j=0;j<11-i-1;j++){
if(str_02[j]>str_02[j+1]){
t = str_02[j];
str_02[j] = str_02[j+1];
str_02[j+1] = t;
}
}
}
fclose(p);
p = fopen("C.txt","w"); //重新以写的形式打开C文档,
//将排好序的内容写进去,并输出内容
for(int i=0;i<11;i++){
fprintf(p,"%c",str_02[i]);
printf("%c",str_02[i]);
}
}