C语言实验十五 文件

简介: C语言实验十五 文件

一、实验目的

(一)掌握文件以及缓冲文件系统、文件指针的概念;

(二)学会使用文件打开、关闭、读、写等文件操作函数;

(三)学会用缓冲文件系统对文件进行简单的操作。

二、预习要求

文件类型指针

文件的打开与关闭 文件的读写操作函数

三、实验内容

将一个磁盘文件中的信息复制到另一个磁盘文件中。

1. #include <stdio.h>
2. #include <stdlib.h>
3. void main( )
4. {
5. FILE*in,*out ; // 定义文件指针
6. char ch,infile[1 0],outfile[1 0];
7. printf("Enter the infile name:\n");
8. scanf("%s",infile);
9. printf("Enter the outfile name:\n");
10. scanf("%s",outfile);
11. if((in=fopen(infile," r"))==NULL)
12. { // 判断文件是否正确读操作
13. printf("cannot open infile\n"); exit(0);
14. }
15. if((out=fopen(outfile,"w"))==NULL)
16. { // 判断文件是否正确写操作
17. printf("cannot open outfile\n"); exit(0);
18. }
19. //判文件是否结束,如果不结束,则读文件in 的内容写入到文件out 之中
20. while(!feof(in)) fputc(fgetc(in),out);
21. fclose(in); //关闭文件
22. fclose(out);
23. }

运行情况如下:

1. Enter the infile name:
2. file1.c(输入原有磁盘文件名)
3. Enter the outfile name:
4. file2.c(输入新复制的磁盘文件名)

程序运行结果是将 fule1. c 文件中的内容复制到 fule2. c 中去。可以用下面命令验证:

1. c:\>type file1.c
2. computer and c  (file1.c中的信息)
3. c:\>type file2.c
4. computer and c  (file2.c 中的信息)

以上程序是按文本文件方式处理的。也可以用此程序来复制一个二进制文件,只需 将两个 fopen 函数中的“r” 和 “w”分别改为“rb” 和 “wb” 即可。

分析以上各程序的算法(用框图表示),解释产生该结果现象的相关知识点及实现语句。

阅读以下程序,回答后面的问题。

1. #include <stdio.h>
2. void main(void)
3. {
4. short a=0x253f,b=0x7b7d; char ch;
5. FILE *fp1,*fp2;
6. fp1=fopen("c:\\abc1.bin","wb+");
7. fp2=fopen("c:\\abc2.txt","w+");
8. fwrite(&a,sizeof(short), 1 ,fp1);
9. fwrite(&b,sizeof(short), 1 ,fp 1);
10. fprintf(fp2,"%hx %hx",a,b); rewind(fp 1); rewind(fp2);
11. while((ch = fgetc(fp1)) != EOF) putchar(ch);
12. putchar('\n');
13. while((ch = fgetc(fp2)) != EOF) putchar(ch);
14. putchar('\n');
15. fclose(fp 1);
16. fclose(fp2);
17. }

(1)请思考程序的输出结果, 然后通过上机运行来加以验证。

(2)将两处 sizeof(short)均改为 sizeof(char)结果有什么不同,为什么?

(3)将 fprintf(fp2,"%hx %hx",a,b) 改为 fprintf(fp2,"%d %d",a,b)结果有什么不同。

四、实验注意事项

注意文件打开的不同方式。

目录
相关文章
|
23天前
|
存储 编译器 C语言
如何在 C 语言中判断文件缓冲区是否需要刷新?
在C语言中,可以通过检查文件流的内部状态或使用`fflush`函数尝试刷新缓冲区来判断文件缓冲区是否需要刷新。通常,当缓冲区满、遇到换行符或显式调用`fflush`时,缓冲区会自动刷新。
|
23天前
|
存储 编译器 C语言
C语言:文件缓冲区刷新方式有几种
C语言中文件缓冲区的刷新方式主要包括三种:自动刷新(如遇到换行符或缓冲区满)、显式调用 fflush() 函数强制刷新、以及关闭文件时自动刷新。这些方法确保数据及时写入文件。
|
1月前
|
C语言
大学生期末C语言实验(学生成绩和鞍点)
大学生期末C语言实验(学生成绩和鞍点)
143 0
大学生期末C语言实验(学生成绩和鞍点)
|
1月前
|
C语言
【C语言】探索文件读写函数的全貌(三)
【C语言】探索文件读写函数的全貌
|
1月前
|
存储 C语言
【C语言】探索文件读写函数的全貌(二)
【C语言】探索文件读写函数的全貌
|
1月前
|
C语言
【C语言】探索文件读写函数的全貌(一)
【C语言】探索文件读写函数的全貌
|
1月前
|
存储 文件存储 C语言
【C语言】深入了解文件:简明指南
【C语言】深入了解文件:简明指南
|
2月前
|
Linux C语言
C语言 文件IO (系统调用)
本文介绍了Linux系统调用中的文件I/O操作,包括文件描述符、`open`、`read`、`write`、`lseek`、`close`、`dup`、`dup2`等函数,以及如何获取文件属性信息(`stat`)、用户信息(`getpwuid`)和组信息(`getgrgid`)。此外还介绍了目录操作函数如`opendir`、`readdir`、`rewinddir`和`closedir`,并提供了相关示例代码。系统调用直接与内核交互,没有缓冲机制,效率相对较低,但实时性更高。
|
3月前
|
存储 C语言
【C语言】C语言-学生成绩管理系统(源码+数据文件+课程论文)【独一无二】
【C语言】C语言-学生成绩管理系统(源码+数据文件+课程论文)【独一无二】
52 15
|
3月前
|
存储 C语言
【c语言】职工信息管理系统 包含读取写入txt文件,职工信息的增删改查
【c语言】职工信息管理系统 包含读取写入txt文件,职工信息的增删改查