云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > IO实验

IO实验

  • 62 次阅读
  • 3 次下载
  • 2025/5/5 16:44:07

实验一 标准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 main() {

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 #include #include #include #include #define maxsize 5

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 -

搜索更多关于: IO实验 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

实验一 标准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

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com