当前位置:首页 > IO实验
实验一 标准I/O操作编程
1.1标准IO实验(一) 【实验内容】
本实验通过一个简单的程序计算默认缓冲区的大小,理解标准I/O提供的三种类型的缓存。 【实验目的】
深入了解标准IO的三种类型,即全缓存,行缓存,不带缓存。 【实验平台】
PC机、ubuntu操作系统,gcc等工具 【实验提示】
全缓冲:当填满I/O缓存后才进行实际的I/O操作;
行缓冲:当在输入和输出中遇到新换行符(‘\\n’)时,进行I/O操作; 不带缓冲:标准I/O库不对字符进行缓冲,例如stderr; 【实验步骤】
1、向缓冲区中输入字符
2、当往缓冲区中写的字符数目超过缓冲区大小的时候,才执行输出。 3、可以手工计算出缓冲区大小(341*3+1=1024) 参考代码: #include
int i=0;
for(i=0;i<379;i++)//每次向缓冲区内写三个字符 { if(i>=100) fprintf(stdout,\ else if (i>=10) fprintf(stdout,\ else if (i>=0) fprintf(stdout,\}
while(1);//强制执行,如果取消,程序结束时将会输出所有字符,看不到效果了。 }
1.2标准IO实验(二) 【实验内容】
本实验通过一个简单的copy程序,完成文件的复制程序,了解基本的标准I/O文件读写的基本步骤。
【实验目的】
深入了解标准IO文件读写的基本原理。 1.学习如何判断文件是否结束 2.熟练掌握标准I/O函数
【实验平台】
PC机、ubuntu操作系统,gcc等工具 【实验提示】
1、判断文件结束有三种方式: a) char p[1024];
while (fgets(p,1024,src)!= NULL)
fputs(p,des1);
b)int c;
while((c=fgetc(src))!=EOF) {
// printf(\ }
fwrite(s,1,n,des3);
fputc(c,des2);
c)while((n=fread(s,1,20,src)) == 20)
fwrite(s,1,n,des3);
2、要拷贝一个文件,即要有源文件和目标文件,使用fopen分别打开两个文件,一个文件被读,一个文件被写。完成文件的复制后须将这两个文件都关闭。
参考代码:
#include
int main(int argc,char *argv[]) {
FILE *fp1,*fp2; char ch[maxsize]; if(argc!=3) { printf(\ return -1;// exit(1); }
- 2 -
if( (fp1=fopen(argv[1],\ { printf(\ return -1;//exit(1); }
if ((fp2=fopen(argv[2],\ {
printf(\ return -1;// exit(1); }
while(fgets(ch,maxsize,fp1)!=NULL) fputs(ch,fp2);
fclose(fp1); fclose(fp2); return 0; }
【实验思考】
如果要将一个文件拷贝到两个文件中,怎么办? 提示:
用fseek()或rewind()定位; 1.3标准IO实验(三) 【实验目的】
通过本实验掌握标准I/O的使用 【实验内容】
编程读写一个文件test.txt,每隔1秒向文件中写入一行数据,类似这样 1, 2007-7-30 15:16:42 2, 2007-7-30 15:16:43
该程序应该无限循环,直到按Ctrl-C中断程序。下次再启动程序写文件时可以追加到原文件之后,并且序号能够接续上次的序号,比如:
1, 2007-7-30 15:16:42 2, 2007-7-30 15:16:43 3, 2007-7-30 15:19:02 4, 2007-7-30 15:19:03 5, 2007-7-30 15:19:04 【实验平台】
PC机、ubuntu操作系统,gcc等工具
- 3 -
【实验提示】
? 要追加写入文件,同时要读取该文件的内容以决定下一个序号是几,应该用什么模式打
开文件?
? 首先判断一下打开的文件是否为新文件,如果是新文件,就从序号1开始写入;如果不
是新文件,则统计原来有多少行,比如有n行,然后从序号n+1开始写入。以后每写一行就把行号加1。
? 获取当前的系统时间需要调用函数time(),得到的结果是一个time_t类型,其实就是
一个大整数,其值表示从UTC时间1970年1月1日00:00:00(称为UNIX的Epoch时间)到当前时刻的秒钟数。然后调用localtime()将time_t所表示的UTC时间转换为本地时间(我们是+8区,比UTC多8个小时)并转成struct tm类型,该类型的各数据成员分别表示年月日时分秒,请自己写出转换格式的代码,不要使用ctime()或asctime()函数。具体用法请查阅man page。time和localtime函数需要头文件time.h。 ? 调用sleep(n)可使程序睡眠n秒,该函数需要头文件unistd.h。 1.4标准IO实验(四) 【实验目的】
通过本实验掌握标准I/O的使用 【实验内容】
一个文件test.txt,文件内容为: 1 2 4 5
编程读写这个文件,修改其内容,添加一行,将文件内容变成: 1 2 3 4 5 【实验平台】
PC机、ubuntu操作系统,gcc等工具 【实验提示】
和数组操作一样,需要将4,5,后移一行后空出一行,然后在这一行中添加3;
实验二 文件I/O操作编程
【实验内容】
本实验通过一个简单的copy程序,完成文件的复制程序,了解基本的文件I/O文件读写的基本步骤。 【实验目的】
通过本实验掌握文件I/O的基本用法
- 4 -
共分享92篇相关文档