当前位置:文档之家› 实验十 文件

实验十 文件

实验十 文件
实验十 文件

实验十文件

实验时间:年月日

【实验目的】

1、了解文件类型及文件指针。

2、学会文件基本操作,如打开、关闭、读、写等。

3、结合一定的算法,掌握比较复杂的文件操作方法。

【实验内容】

1、文件的基本操作;

2、fopen函数的使用及其各参数的含义,fclose函数的使用。

【实验步骤】

编程题:

文件复制与追加

1、根据程序提示从键盘输入一个已存在的文本文件的完整文件名,再输入一个新文本文件的完整文件名,然后将已存在的文本文件中的内容全部复制到新文本文件中,利用文本编辑软件,通过查看文件内容验证程序执行结果。

2、模拟DOS命令下的COPY命令,在DOS状态下输入命令行,以实现将一个已存在的文本文件中的内容全部复制到新文本文件中,利用文本编辑软件查看文件内容,验证程序执行结果。

3、根据提示从键盘输入一个已存在的文本文件的完整文件名,再输入另一个已存在的文本文件的完整文件名,然后将第一个文本文件的内容追加到第二个文本文件的原内容之后,利用文本编辑软件查看文件内容,验证程序执行结果。

4、根据提示从键盘输入一个已存在的文本文件的完整文件名,再输入另一个已存在的文本文件的完整文件名,然后将源文本文件的内容追加到目的文本文件的原内容之后,并在程序运行过程中显示源文件和目的文件中的文件内容,以此来验证程序执行结果。

三、分析与思考

如果要复制的文件内容不是用函数fputc()写入的字符,而是用函数fprintf()写入的格式化数据文件,那么如何正确读出该文件中的格式化数据呢?还能用本实验中的程序实现文件的拷贝吗?请读者自己编程验证。

解答:

1、#include

#include

#define MAXLEN 80

main()

{

FILE *fpSrc = NULL;

FILE *fpDst = NULL;

char ch;

char srcFilename[MAXLEN]; /* 源文件名 */

char dstFilename[MAXLEN]; /* 目标文件名 */

printf("Input source filename:");

scanf("%s", srcFilename); /*输入源文件名*/

if ((fpSrc = fopen(srcFilename,"r")) == NULL) /*只读方式打开源文件*/ {

printf("can't open file %s!\n", srcFilename);

exit(0);

}

printf("Input destination filename:");

scanf("%s", dstFilename); /*输入目标文件名*/

if ((fpDst = fopen(dstFilename,"w")) == NULL) /*只写方式打开目标文件*/

{

printf("can't open file %s!\n", dstFilename);

exit(0);

}

/*文件复制*/

while ((ch = fgetc(fpSrc)) != EOF)

{

if (fputc(ch, fpDst) == EOF)

{

printf("Copy failed!");

exit(0);

}

}

printf("Copy succeed.\n");

fclose(fpSrc); /*关闭源文件*/

fclose(fpDst); /*关闭目的文件*/

}

1、

#include

#define MAXLEN 80

int CopyFile(const char *srcName, const char *dstName);

main()

{

char srcFilename[MAXLEN]; /* 源文件名 */

char dstFilename[MAXLEN]; /* 目标文件名 */

printf("Input source filename:");

scanf("%s", srcFilename); /*输入源文件名*/

printf("Input destination filename:");

scanf("%s", dstFilename); /*输入目标文件名*/

if (CopyFile(srcFilename, dstFilename)) /*文件复制*/

{

printf("Copy succeed.\n");

}

else

{

perror("Copy failed");

}

}

/* 函数功能:把srcName文件内容复制到dstName文件中

函数入口参数:文件路径

函数返回值:非0值表示复制成功,否则表示出错

*/

int CopyFile(const char *srcName, const char *dstName)

{

FILE *fpSrc = NULL;

FILE *fpDst = NULL;

int ch, rval = 1;

if ((fpSrc = fopen(srcName,"r")) == NULL) /*只读方式打开源文件*/ goto ERROR;

if ((fpDst = fopen(dstName,"w")) == NULL) /*只写方式打开目标文件*/ goto ERROR;

/* 复制文件 */

while ((ch=fgetc(fpSrc)) != EOF)

{

if (fputc(ch, fpDst) == EOF)

goto ERROR;

}

fflush(fpDst); /* 确保存盘 */

goto EXIT;

ERROR:

rval = 0;

EXIT:

if (fpSrc != NULL)

fclose(fpSrc);

if (fpDst != NULL)

fclose(fpDst);

return rval;

}

2、

/*源文件名:mycopy.c*/

#include

#include

int CopyFile(const char *srcName, const char *dstName);

main(int argc, char *argv[])

{

char ch;

if (argc != 3)

{

printf("too few parameters!\n");

exit(0);

}

if (CopyFile(argv[1], argv[2])) /*文件复制*/ {

printf("Copy succeed.\n");

}

else

{

perror("Copy failed");

}

}

/* 函数功能:把srcName文件内容复制到dstName

函数入口参数:文件路径

函数返回值:非0值表示复制成功,否则表示出错

*/

int CopyFile(const char *srcName, const char *dstName)

{

FILE *fpSrc = NULL;

FILE *fpDst = NULL;

int ch, rval = 1;

if ((fpSrc = fopen(srcName,"r")) == NULL) /*只读方式打开源文件*/ goto ERROR;

if ((fpDst = fopen(dstName,"w")) == NULL) /*只写方式打开目标文件*/ goto ERROR;

/* 复制文件 */

while ((ch=fgetc(fpSrc)) != EOF)

{

if (fputc(ch, fpDst) == EOF)

goto ERROR;

}

fflush(fpDst); /* 确保存盘 */

goto EXIT;

ERROR:

rval = 0;

EXIT:

if (fpSrc != NULL)

fclose(fpSrc);

if (fpDst != NULL)

fclose(fpDst);

return rval;

}

3、

#include

#define MAXLEN 80

int AppendFile(const char *srcName, const char *dstName);

main()

{

char srcFilename[MAXLEN]; /* 源文件名 */

char dstFilename[MAXLEN]; /* 目标文件名 */

printf("Input source filename:");

scanf("%s", srcFilename); /*输入源文件名*/

printf("Input destination filename:");

scanf("%s", dstFilename); /*输入目标文件名*/

if (AppendFile(srcFilename, dstFilename)) /*文件追加*/

{

printf("Append succeed.\n");

}

else

{

perror("Append failed");

}

}

/* 函数功能:把srcName文件内容复制到dstName

函数入口参数:文件路径

函数返回值:非0值表示复制成功,否则表示出错

*/

int AppendFile(const char *srcName, const char *dstName)

{

FILE *fpSrc = NULL;

FILE *fpDst = NULL;

int ch, rval = 1;

if ((fpSrc = fopen(srcName,"r")) == NULL) /*只读方式打开源文件*/ goto ERROR;

if ((fpDst = fopen(dstName,"a")) == NULL) /*追加方式打开目标文件*/ goto ERROR;

/* 文件追加 */

while ((ch=fgetc(fpSrc)) != EOF)

{

if (fputc(ch, fpDst) == EOF)

goto ERROR;

}

fflush(fpDst); /* 确保存盘 */

goto EXIT;

ERROR:

rval = 0;

EXIT:

if (fpSrc != NULL)

fclose(fpSrc);

if (fpDst != NULL)

fclose(fpDst);

return rval;

}

4、

#include

#define MAXLEN 80

int AppendFile(const char* srcName, const char* dstName);

int DisplayFile(const char* srcName);

main()

{

char srcFilename[MAXLEN]; /* 源文件名 */

char dstFilename[MAXLEN]; /* 目标文件名 */

printf("Input source filename:");

scanf("%s", srcFilename); /*输入源文件名*/

printf("Input destination filename:");

scanf("%s", dstFilename); /*输入目标文件名*/ if(!DisplayFile(srcFilename))

perror("Display source file failed");

if(!DisplayFile(dstFilename))

perror("Display destination file failed");

if (AppendFile(srcFilename, dstFilename)) /*文件追加*/

{

printf("Append succeed.\n");

DisplayFile(dstFilename);

}

else

{

perror("Append failed");

}

}

/* 函数功能:把srcName文件内容复制到dstName

函数入口参数:文件路径

函数返回值:非0值表示复制成功,否则表示出错

*/

int AppendFile(const char *srcName, const char *dstName)

{

FILE *fpSrc = NULL;

FILE *fpDst = NULL;

int ch, rval = 1;

if ((fpSrc = fopen(srcName,"r")) == NULL) /*只读方式打开源文件*/ goto ERROR;

if ((fpDst = fopen(dstName,"a")) == NULL) /*追加方式打开目标文件*/ goto ERROR;

/* 文件追加 */

while ((ch=fgetc(fpSrc)) != EOF)

{

if (fputc(ch, fpDst) == EOF)

goto ERROR;

}

fflush(fpDst); /* 确保存盘 */

goto EXIT;

ERROR:

rval = 0;

EXIT:

if (fpSrc != NULL)

fclose(fpSrc);

if (fpDst != NULL)

fclose(fpDst);

return rval;

}

/* 函数功能:显示srcName文件内容

函数入口参数:文件路径

函数返回值:非0值表示显示成功,否则表示出错

*/

int DisplayFile(const char *srcName)

{

FILE *fpSrc = NULL;

int ch, rval = 1;

if ((fpSrc = fopen(srcName,"r")) == NULL) /*只读方式打开源文件*/ goto ERROR;

/* 文件显示 */

printf("File %s content:\n", srcName);

while ((ch=fgetc(fpSrc)) != EOF)

{

if (fputc(ch, stdout) == EOF)

goto ERROR;

}

printf("\n");

goto EXIT;

ERROR:

rval = 0;

EXIT:

if (fpSrc != NULL)

fclose(fpSrc);

return rval;

}

大学物理实验报告范例

怀化学院 大学物理实验实验报告 系别物信系年级2009专业电信班级09电信1班姓名张三学号09104010***组别1实验日期2009-10-20 实验项目:长度和质量的测量 【实验题目】长度和质量的测量

【实验目的】 1. 掌握米尺、游标卡尺、螺旋测微计等几种常用测长仪器的读数原理和使用方法。 2. 学会物理天平的调节使用方法,掌握测质量的方法。 3. 学会直接测量和间接测量数据的处理,会对实验结果的不确定度进行估算和分析,能正确地表示测量结果。 【实验仪器】(应记录具体型号规格等,进实验室后按实填写) 直尺(50cm)、游标卡尺(0.02mm)、螺旋测微计(0~25mm,0.01mm),物理天平(TW-1B 型,分度值0.1g ,灵敏度1div/100mg),被测物体 【实验原理】(在理解基础上,简明扼要表述原理,主要公式、重要原理图等) 一、游标卡尺 主尺分度值:x=1mm,游标卡尺分度数:n (游标的n 个小格宽度与主尺的n-1小格长度相等),游标尺分度值: x n n 1 -(50分度卡尺为0.98mm,20分度的为:0.95mm ),主尺分度值与游标尺分度值的差值为:n x x n n x =-- 1,即为游标卡尺的分度值。如50分度卡尺的分度值为:1/50=0.02mm,20分度的为:1/20=0.05mm 。 读数原理:如图,整毫米数L 0由主尺读取,不足1格的小数部分l ?需根据游标尺与主尺对 齐的刻线数k 和卡尺的分度值x/n 读取:n x k x n n k kx l =--=?1 读数方法(分两步): (1)从游标零线位置读出主尺的读数.(2)根据游标尺上与主尺对齐的刻线k 读出不足一分格的小数,二者相加即为测量值.即: n x k l l l l +=?+=00,对于50分度卡尺:02.00?+=k l l ;对20分度:05.00?+=k l l 。实际读数时采取直读法读数。 二、螺旋测微器 原理:测微螺杆的螺距为,微分筒上的刻度通常为50分度。当微分筒转一周时,测微螺杆前进或后退mm ,而微分筒每转一格时,测微螺杆前进或后退50=。可见该螺旋测微器的分度值为mm ,即千分之一厘米,故亦称千分尺。 读数方法:先读主尺的毫米数(注意刻度是否露出),再看微分筒上与主尺读数准线对齐的刻线(估读一位),乖以, 最后二者相加。 三:物理天平 天平测质量依据的是杠杆平衡原理 分度值:指针产生1格偏转所需加的砝码质量,灵敏度是分度值的倒数,即n S m =?,它表示 天平两盘中负载相差一个单位质量时,指针偏转的分格数。如果天平不等臂,会产生系统误差,消除方法:复称法,先正常称1次,再将物放在右盘、左盘放砝码称1次(此时被测质量应为砝码质量减游码读数),则被测物体质量的修正值为:21m m m ?= 。 【实验内容与步骤】(实验内容及主要操作步骤) 1. 米尺测XX 面积:分别测量长和宽各一次。 2. 游标卡尺测圆环体积:(1)记下游标卡尺的分度值和零点误差。(2)用游标卡尺测量圆环

实验十报告

循环伏安法测定电极反应参数实验报告 姓名:吉武良院系:化院20系学号:PB13206270 一、实验目的 (1)了解循环伏安法的基本原理、特点和应用。 (2)掌握循环伏安法的实验技术和有关参数的测定方法。 二、实验原理 在电化学分析方法中,凡是以测量电解过程中所得电流-电位(电压)曲线进行测定的方法称为伏安分析法。按施加激励信号的方式、波形及种类的不同,伏安法又分为多种技术,循环伏安法就是其中之一,而且是一种重要的伏安分析方法。 先看线性扫描伏安法,若向工作电极和对电极上施加一随时间线性变化的直流电压(图1),记录电流-电势曲线(图2)进行分析,就叫线性扫描伏安法。 图1 图2 后,再回扫至原来的起始电位值E i,电循环伏安法就是将线性扫描电位扫到某电位E m 位与时间的关系如图3所示。电压扫描速度可从每秒毫伏到伏量级。所用的指示电极有悬汞电极、铂电极或玻璃碳电极等。 图3 图4

当溶液中存在氧化态物质O 时,它在电极上可逆地还原生成还原态物质R , O + ne → R 当电位方向逆转时,在电极表面生成的R 则被可逆地氧化为O, R → O + ne 一个三角波扫描,可以完成还原与氧化两个过程,记录出如图4所示的循环伏安曲线。 循环伏安法一般不用于定量分析,主要用于研究电极反应的性质、机理和电极过程动力学参数等。 在循环伏安法中,阳极峰电流i P a 、阴极峰电流i P c 、阳极峰电位E pa 、阴极峰电位E P c 是最重要的参数,对可逆电极过程来说, 5763 E E E mV n ?=pa pc -= (1) 即阳极峰电势(E pa )与阴极峰电势(E pc )之差为57/n 至63/n mV 之间,确切的值与扫描过阴极峰电势之后多少毫伏再回扫有关。一般在过阴极峰电势之后有足够的毫伏数再回扫,△E P 值为58/n mV 。 1i i ≈pa pc (与扫描速度无关) (2) 正向扫描的峰电流i p 为: 3/21/21/2 i n AD c ν?5p =2.6910 (3) 式中各参数的意义为: i p — 峰电流(安培); n — 电子转移数; A — 电极面积(cm 2 ) D — 扩散系数(cm 2 /s ) ν—扫描速度(V /s ) c — 浓度(mol /L ) 从i p 的表达式看:i p 与ν1/2 和c 都呈线性关系,对研究电极过程具有重要意义。 标准电极电势为: 02 E E E += pa pc (4) 所以对可逆过程,循环伏安法是一个方便的测量标准电极电位的方法。 对于准可逆过程,曲线形状与可逆度有关,一般来说,△E P >59mV/n ,且峰电位随扫描速度的增加而变化,阴极峰变负,阳极峰变正。此外,根据电极反应性质的不同,i P a / i P c 可大于1,等于1或小于1,但均与扫描速度的平方根成正比,因为峰电流仍是由扩散速度所控制的。 对于不可逆过程,反扫时没有峰,但峰电流仍与扫描速度的平方根成正比,峰电位随扫描速度的变化而变化。 根据E p 与扫描速度ν的关系,可计算准可逆和不可逆电极反应的速率常数K s 。 循环伏安法除可应用于电极过程可逆性的研究外,对于反应产物的稳定性、电化学-化学偶联反应及吸附等方面也是一种有效的研究手段。 三、仪器与试剂 1. 仪器 CHI600D 型电化学工作站;铂盘电极;玻璃碳电极;铂丝电极及饱和甘汞电极。 2. 试剂

实验 文件管理(二)

实验六:文件系统 一、目的要求 1、用高级语言编写和调试一个简单的文件系统,模拟文件管理的工作过程。从而对各种文件操作命令的实质内容和执行过程有比较深入的了解。 2、要求设计一个n个用户的文件系统,每次用户可保存m个文件,用户在一次运行中只能打开一个文件,对文件必须设置保护措施,且至少有Create、delete、open、close、read、write等命令。 二、例题: ①设计一个10个用户的文件系统,每次用户可保存10个文件,一次运行用户可以打开5个文件。 ②程序采用二级文件目录(即设置主目录[MFD])和用户文件目录(UED)。另外,为打开文件设置了运行文件目录(AFD)。 ③为了便于实现,对文件的读写作了简化,在执行读写命令时,只需改读写指针,并不进行实际的读写操作。 ④算法与框图: a、因系统小,文件目录的检索使用了简单的线性搜索。 b、文件保护简单使用了三位保护码:允许读写执行、对应位为1,对应位为0,则表示不允许读写、执行。 c、程序中使用的主要设计结构如下: Ⅰ、主文件目录和用户文件目录(MFD、UFD) Ⅱ、打开文件目录(AFD)(即运行文件目录)

三、调度算法的流程图 四、文件管理源程序 #include #include #include #include typedefstructufd { char filename[10];/*文件名*/ char procode[8];/*属性*/

int length;/*文件长度*/ structufd *nextfile;/*指向下一个文件*/ }UFD; typedefstructmfd { char username[10];/*用户名*/ structufd *link;/*指向该用户的第一个文件*/ }MFD; typedefstructprotected_flag { char code[4]; }PRO; typedefstructafd/*运行文件目录*/ { char filename[10];/*打开文件名*/ charprocode[4]; intrwpointer;/*读写指针*/ }AFD; PRO flag[3]={"100",/*只读*/ "110",/*读写*/ "001"/*可执行*/ }; UFD *rw_pointer;/*读写指针*/ AFD *afd=NULL; MFD filesystem[10]; intnum;/*当前用户个数*/ voiddisplayallfile() { inti; UFD *p; for(i=0;ifilename); printf("文件属性: %s\t||",p->procode); printf("文件长度: %d\n\n",p->length); p=p->nextfile; } }

10-11-2实验报告(答案)

. 《C程序设计》 实验报告 学期:2010--2011学年第二学期 教师姓名: 教研室:

实验1 熟悉C语言程序的运行环境,掌握数据描述 1.1 实验目的 1.了解在开发环境中如何编辑、编译、连接和运行一个C语言程序。 2.通过运行简单的C语言程序,初步了解C语言程序的结构特点。 3.掌握C语言数据类型的概念,学会使用C语言的相关运算符构成表达式。 1.2 实验预习 1.熟悉Visual C++的启动和退出及Visual C++中的编辑、编译、连接和运行命令。 2.了解下列命令及函数:include、main、printf、scanf。 3.熟悉Visual C++环境下每个菜单项的功能及相关命令对应的操作。 4.各种数据类型变量的定义形式及取值范围;熟悉下列标识符的含义。 int、short (int)、long (int)、unsigned (int)、float、double、char、void 5.各类运算符的优先级和结合规则。 6.常量与变量的区别和联系。 运行环境: 1.双击桌面Visual C++快捷方式进入Visual C++,或通过执行“开始——>程序——> Microsoft Visual Studio 6.0——>Microsoft Visual C++6.0”或执行文件"C:\Program Files\Microsoft Visual Studio\COMMON\MSDev98\Bin\MSDEV.EXE"。 2.单击“文件”菜单的“新建”命令。 3.在打开的“新建”对话框中选择“文件”标签。 4.选择C++ Source File,在目录输入栏选择文件保存位置,然后在文件输入栏中输入文件名,扩展名为.c (例如first.c) ,单击确定按钮。如图所示: 5.在源窗口中输入源程序,如图所示。

兰州大学操作系统实验十文件全资料系统观察题目和问题详解

实验十 实验名称:10 文件系统观察 实验目的: 1.学习和掌握文件系统的基本概念 2.学习对文件和文件系统的观察和操作 3.学习和使用文件系统的权限控制 实验时间 3学时 预备知识: 1.基本命令 命令名主要选项功能说明ls -a, -l, -i 列出指定文件 stat 显示文件系统信息 cd 切换目录 pwd 报告当前路径 touch -a, -m 创建新文件 mv -i, -u 移动 cp -a, -i, -l, -s, -R 复制 rm -i,-r 删除文件 mkdir -p 创建目录

rmdir 删除目录(空目录) ln -s 建立 find -type, -name, -ctime 查找文件 locate 快速查找文件 grep -i,-l, -r, -v, -n 查找文件容 chmod -R 添加、删除、指派文件或目录的权限 chown 改变文件属主 chgrp 改变文件组 umask 查看、设置权限掩码 mkfs -t 创建文件系统 mke2fs -j, -b, -i 创建ext2/ext3文件系统 mount -t, -o, -a 挂载文件系统 umount 卸载文件系统 df -i, -h, -k, -a 提供硬盘及其分区、其它驱动器在文件系统中的装入位 置以及它们所占用的空间大小等信息。 du -c, -h 提供关于文件和目录所占空间的信息 fsck 检查文件系统 2.文件类型 类型说明 普通文件一组连续的数据用一个名称表示 目录实施了分级文件系统的结构 设备文件要访问硬件的每个程序都必须通过对应的设备文件来访问硬件 对存储在文件系统中其他点的文件的引用

初中生物实验报告_10

初中生物实验报告 ——新疆塔城地区额敏县郊区乡一中 孔凡琴一、提出问题: 绿叶在光下制造的有机物是不是淀粉?(是) 二、作出假设: 绿叶在光下制造的有机物是淀粉。(是) 三、实验内容: 四、实验目的: 1、检验绿叶在光下制造有机物是不是淀粉。 2、探究光是不是绿叶制造有机物不可缺少的条件。 五、实验器材: 课本必备的材料用具小组设计需要的材料用具 盆栽天竺葵、黑纸片、别针、酒精(70%-80%),碘液、小烧杯、大烧杯、培养皿、酒精灯、三脚架、石棉网、镊子、火柴、清水、防火培养皿、防火湿布等。盆栽黑纸片、别针、酒精 (70%-80%),碘液、小烧杯、大烧杯、培养皿、酒精灯、三脚架、石棉网、镊子、火柴、清水、防火培养皿、防火湿布等。另外,配备水浴锅、大红花叶等 六、实验安全注意事项: 1、注意正确使用火柴:采用易燃的木材做成火柴梗,在其一端蘸以蜡油和含氯酸钾的药料(火柴头),制成火柴;在包装盒上涂以含赤磷的磷面。使用时,将火柴在磷面上擦划,即能引燃。使用时将火柴棒取出,火柴头紧贴包装盒上磷面,使火柴棒成45-60度角,从下往上(下往上也可)擦划即可点燃。点燃酒精灯后,把它放进有水的收集垃圾的烧杯中,使其熄灭。 2、正确使用酒精灯: (1)检查灯芯,灯芯顶端不平或已烧焦,需要剪去少许使其平整;(2)检查酒精量,灯里酒精应大于灯容积的1/4,少于2/3;(3)禁止事项:绝对禁止用酒精灯引烧另一盏酒精灯,不可用嘴去吹灭,不要碰倒酒精灯。 3、正确使用水浴锅: 工作时,按要求接通电源,开启电源开关,按下调温按钮(调温到100℃),待红灯灭,绿灯亮表示恒温。水温高,注意安全。 七、实验步骤: 课本实验步骤小组实验步骤 1、把盆栽天竺葵放到黑暗处 一昼夜; 2、用黑纸片把叶片的一部分从上下两面遮盖起来,然后移1、把盆栽天竺葵放到黑暗处一昼夜; 2、用黑纸片把叶片的一部分从上

实验十 文件

实验十文件 实验时间:年月日 【实验目的】 1、了解文件类型及文件指针。 2、学会文件基本操作,如打开、关闭、读、写等。 3、结合一定的算法,掌握比较复杂的文件操作方法。 【实验内容】 1、文件的基本操作; 2、fopen函数的使用及其各参数的含义,fclose函数的使用。 【实验步骤】 编程题: 文件复制与追加 1、根据程序提示从键盘输入一个已存在的文本文件的完整文件名,再输入一个新文本文件的完整文件名,然后将已存在的文本文件中的内容全部复制到新文本文件中,利用文本编辑软件,通过查看文件内容验证程序执行结果。 2、模拟DOS命令下的COPY命令,在DOS状态下输入命令行,以实现将一个已存在的文本文件中的内容全部复制到新文本文件中,利用文本编辑软件查看文件内容,验证程序执行结果。 3、根据提示从键盘输入一个已存在的文本文件的完整文件名,再输入另一个已存在的文本文件的完整文件名,然后将第一个文本文件的内容追加到第二个文本文件的原内容之后,利用文本编辑软件查看文件内容,验证程序执行结果。 4、根据提示从键盘输入一个已存在的文本文件的完整文件名,再输入另一个已存在的文本文件的完整文件名,然后将源文本文件的内容追加到目的文本文件的原内容之后,并在程序运行过程中显示源文件和目的文件中的文件内容,以此来验证程序执行结果。 三、分析与思考 如果要复制的文件内容不是用函数fputc()写入的字符,而是用函数fprintf()写入的格式化数据文件,那么如何正确读出该文件中的格式化数据呢?还能用本实验中的程序实现文件的拷贝吗?请读者自己编程验证。 解答: 1、#include #include #define MAXLEN 80 main() { FILE *fpSrc = NULL; FILE *fpDst = NULL; char ch; char srcFilename[MAXLEN]; /* 源文件名*/

实验3 文件管理

实验三文件管理 一、实验目的 理解文件系统的主要概念及文件系统内部功能和实现过程。 二、实验内容 采用二级文件目录结构,编写程序实现文件系统的文件存储空间的管理、文件的物理结构、目录结构管理和文件操作。具体如下: 1、设计一个有m个用户的文件系统,每个用户最少可保存一个文件。 2、规定用户在一次运行中只能打开K个文件。 3、系统能检查键入命令的正确性,出错时应能显示出错原因。 4、对文件应能设置保护措施,如只能执行、允许读、允许写等。 5、对文件的操作设计提供一套文件操作: CREATE建立文件; DELETE删除文件; OPEN打开文件; CLOSE关闭文件; READ读文件; WRITE写文件。 三、实验要求 ①详细描述实验设计细想、程序结构及各模块设计思路。 ②详细描述程序所用数据结构及算法 ③给出测试用例及实验结构 ④为增加程序可读性,在程序中进行适当注释说明 ⑤认真进行实验总结,包括:设计中遇到的问题、解决方法和收获 ⑥实验报告撰写要求结构清晰、描述准确逻辑性强 四、实验过程 举例:主文件目录 mfd=record username :string[maxlen]; files :array[1..K] of ufd; ofiles :arrau[1..S] of uod end; 用户打开文件目录表: uod=record filename:string[maxlen]; attrib:attrib;

status:(open,create); rp,up:integer; end; 用户文件目录: ufd=record fielname:string[maxlen]; attrib ro,rw); len:integer; addr:integer; end; 流程图: 二、主要数据结构 界面采用VC6 MFC环境开发

10-11-2实验报告(答案)

《C程序设计》实验报告 学期:2010--2011学年第二学期 教师姓名: 教研室:

实验1 熟悉C语言程序的运行环境,掌握数据描述 实验目的 1.了解在开发环境中如何编辑、编译、连接和运行一个C语言程序。 2.通过运行简单的C语言程序,初步了解C语言程序的结构特点。 3.掌握C语言数据类型的概念,学会使用C语言的相关运算符构成表达式。 实验预习 1.熟悉Visual C++的启动和退出及Visual C++中的编辑、编译、连接和运行命令。 2.了解下列命令及函数:include<>、main、printf、scanf。 3.熟悉Visual C++环境下每个菜单项的功能及相关命令对应的操作。 4.各种数据类型变量的定义形式及取值范围;熟悉下列标识符的含义。 int、short (int)、long (int)、unsigned (int)、float、double、char、void 5.各类运算符的优先级和结合规则。 6.常量与变量的区别和联系。 运行环境: 1.双击桌面Visual C++快捷方式进入Visual C++,或通过执行“开始——>程序——> Microsoft Visual Studio ——> Microsoft Visual C++6.0”或执行文件"C:\Program Files\Microsoft Visual Studio\COMMON\MSDev98\Bin\"。 2.单击“文件”菜单的“新建”命令。 3.在打开的“新建”对话框中选择“文件”标签。 4.选择C++ Source File,在目录输入栏选择文件保存位置,然后在文件输入栏中输入文件名,扩展名为.c (例如,单击确定按钮。如图所示:

实验10

五、附录 #include #include #define Maxsize 10 typedef struct node{ int data; struct node *lchild,*rchild; }Bitree; Bitree *Q[Maxsize]; int temp=0; int Bt[Maxsize]; Bitree *Creatree(){ //建立二叉树 Bitree *T,*S; int ch; int front,rear,flag; flag=0; front=0; rear=-1; T=NULL; printf("建立二叉树(1表示虚结点,0表示输入结束):\n"); scanf("%d",&ch); while(ch!=0){ if(ch!=1){ //输入结点不是虚结点 S=(Bitree *)malloc(sizeof(Bitree)); S->data=ch; S->lchild=S->rchild=NULL; rear++; Q[rear]=S; if(rear==front){ T=S; flag++; } else{ if(flag%2==1) //寻找父结点 Q[front]->lchild=S; if(flag%2==0){ Q[front]->rchild=S; front++; } flag++; } } else{ //输入结点为虚结点 if(flag%2==0) front++; flag++; } scanf("%d",&ch); }

return T; } void Inorder(Bitree *T){ //中序遍历二叉树,并将每个结点数据存入数组中if(T!=NULL){ Inorder(T->lchild); printf("%d\t",T->data); Bt[temp]=T->data; temp++; Inorder(T->rchild); } } int JugBitree(int Bt[]){ //判断是否是二叉树 int i,flag=1; for(i=0;iBt[i+1]){ flag=0; break; } } return flag; } void JugOut(int t){ //判断输出 if(t==1) printf("给定二叉树是二叉排序树!\n"); if(t==0) printf("给定二叉树不是二叉排序树!\n"); } void main(){ Bitree *T; T=Creatree(); printf("中序遍历:\n"); Inorder(T); printf("\n"); JugOut(JugBitree(Bt )); } 六、运行结果

实验报告10-2

实验报告 课程名称:高级语言程序设计 实验十:指针及其应用 班级:2015级 学生姓名: 学号: 专业:计算机科学与技术 指导教师: 学期:2015-2016学年上学期 云南大学信息学院

一、实验目的 1、掌握指针的概念 2、掌握指针变量的定义和基本使用方法 3、掌握使用指针操作数组元素的方法 4、掌握使用指针操作字符串的方法 二、知识要点 1、变量的直接访问和间接访问的概念 2、指针和指针变量的概念 3、简单变量的指针及指向简单变量的指针变量的定义、赋值及使用 4、数组的指针及指向数组的指针变量的定义、赋值及使用 5、字符串的指针及指向字符串的指针变量的定义、赋值及使用 三、实验预习(要求做实验前完成) 1、写出一个C语句,使得指针变量u指向变量x:int *u=&; 2、写出一个C语句,输出“指针变量p指向的整型变量”的值: printf("%d",*p); 3、把“指针变量u所指向的变量”的值变为40,其语句是:*u=40; 4、定义三个变量,其中x1是整型变量;y1、y2是指向整数的指针变量:int x1=0,*y1=0,*y2=0; 5、若有语句:char t[20]= “abcdefgh”,*p;则使p指向字符串的第一个 字符的语句是:p=t; 四、实验内容(以下题目要求使用指针方法完成) 1、已知一个整数数组x[4],它的各元素值分别为3、11、8和22。使用指针表 示法编程序,求该数组各元素之积。 2、编写程序,输入10个整数至一数组,将其中最小的数与第一个数对调,把 最大的数与最后一个数对调。(要求输出对调前后的数组) 3、编写程序,复制一个字符串到字符数组x中,要求在复制时删除其中的数字 字符。输出x数组。(x数组中不能含有数字字符) 4、编写参数为指针变量的函数del,功能是删除字符串中的*号。要求在主函 数中定义数组a,b,输入字符串给数组a,调用del删除*号后存放在数组b 中,输出b数组。 5、编写参数为指针变量的函数,功能是将数组元素按输入顺序逆置存放,要求 在主函数中输入数组元素的值,在主函数中输出逆置后的数组。 6、编写参数为指针变量的函数fun,功能是交换两个数组中的对应元素。已知 数组a元素值分别为10,20,30,40,数组b元素值分别为1,2,3,4,要求在主函

第10章 预处理命令

第十章预处理命令 所谓编译预处理是指,在对源程序进行编译之前,先对源程序中的编译预处理命令进行处理;然后再将处理的结果,和源程序一起进行编译,以得到目标代码。 一、宏定义与符号常量 在C语言中,“宏”分为无参数的宏(简称无参宏)和有参数的宏(简称有参宏)两种。 无参宏定义 1.无参宏定义的一般格式 #define 标识符字符串 其中:“define”为宏定义命令;“标识符”为所定义的宏名,通常用大写字母表示,以便于与变量区别;“字符串”可以是常数、表达式、格式串等。 2.使用宏定义的优点 (1)可提高源程序的可维护性 (2)可提高源程序的可移植性 (3)减少源程序中重复书写字符串的工作量 例9.1 输入圆的半径,求圆的周长、面积和球的体积。要求使用无参宏定义圆周率。 /*程序功能:输入圆的半径,求圆的周长、面积和球的体积。*/ #define PI 3.1415926 /*PI是宏名,3.1415926用来替换宏名的常数*/ void main() { float radius,length,area,volume; printf("Input a radius: "); scanf("%f",&radius); length=2*PI*radius; /*引用无参宏求周长*/ area=PI*radius*radius; /*引用无参宏求面积*/ volume=PI*radius*radius*radius*3/4; /*引用无参宏求体积*/ printf("length=%.2f,area=%.2f,volume=%.2f\n", length, area, volume); } 3.说明 (1)宏名一般用大写字母表示,以示与变量区别。但这并非是规定。 (2)宏定义不是C语句,所以不能在行尾加分号。否则,宏展开时,会将分号作为字符串的1个字符,用于替换宏名。 (3)在宏展开时,预处理程序仅以按宏定义简单替换宏名,而不作任何检查。如果有错误,只能由编译程序在编译宏展开后的源程序时发现。 (4)宏定义命令#define出现在函数的外部,宏名的有效范围是:从定义命令之后,到

Java实验10

实验十 一、实验内容: ①使用字符流BufferedReader类,统计file.txt包含的字符个数和行数。 ②完成将文件file1.txt的内容拷贝生成另一个新文件file2.txt 二、实验结果: 1. 统计file.txt包含的字符个数和行数,效果如下: . 2.将文件file1.txt的内容拷贝生成另一个新文件file2.txt,效果如下: 三、实验代码: import java.io.*; class countDataline { public static void main(String args[])throws IOException{ FileInputStream fis=new FileInputStream("file.txt"); BufferedReader dataLine=new BufferedReader(new InputStreamReader(fis)); String currentLine; int lineCount=0;

int charCount=0; while((currentLine=dataLine.readLine())!=null) { System.out.println(currentLine); ++lineCount; charCount+=currentLine.length(); } System.out.println("字符个数为:"+Integer.toString(charCount)+" "+"字符行数为:"+Integer.toString(lineCount)); File inFile=new File("file1.txt"); File outFile=new File("file2.txt"); FileInputStream fis1=new FileInputStream(inFile); FileOutputStream fos1=new FileOutputStream(outFile); int c; while((c=fis1.read())!=-1) fos1.write(c); fis1.close(); fos1.close(); } } 四、小结体会: 通过这次实验,我了解了关于输入输出流的编程方法。也通过这次实验,我对绝对路径和相对路径在程序中的编写,有了全新的认识和了解。 如文件的绝对路径为C:\文档\file 那么编程时,编程语句为:(1)File inFile=new File(C:\\文档\\file); (2)File inFile=new File(C:/文档/file);

实验报告10

学生实验报告 一、实验综述 1、实验目的及要求 1. 某商店经销经销一种货物,货物成箱购进,成箱卖出,购进和卖出时以重量为单位,各箱的重量不一样,因此,商店需要记录下目前库存的货物的总重量,现在要求用C++语言来模拟商店货物购进和卖出的情况。 2. 定义类time,数据成员有hour, minute和second 。以“时:分:秒”(24时制)的格式输出时间,还提供将时间增加一秒的成员函数next-time( ),要求能测试出如下的结果: ① 能够进入下一分钟。 ② 能够进入下一小时。 2、实验仪器、设备或软件 硬件设备:计算机、因特网。 软件环境:Windows系列操作系统, C++语言编译环境:Visual C++软件,Office系列软件,如Word、PowerPoint等。 二、实验过程(实验步骤、记录、数据、分析) (1) #include static int weight=0; class goods { int in,out;

void buy() { cout<<"买入重量: "; cin>>in; weight+=in; } void sell() { cout<<"卖出重量: "; cin>>out; weight-=out; if(weight<0) { cout<<"库存不足,已全卖出:\n"; } } }; void main() { goods s; char ch; while(1) { cout<<"1.买入货物重量"<>ch; switch(ch) { case'1': s.buy(); break; case'2': s.sell();break; case'3': cout<<"剩余重量为: "<

第一次实验内容10

第一次实验内容 一、实验名称:Linux基础 二、实验类型:验证 三、实验目的: 1.熟悉Linux操作系统环境,熟悉Linux系统管理内容 2.熟练掌握Linux下常用基本命令 3.熟悉Linux文件系统结构,熟练使用命令操作文件及目录 4.掌握VIM编辑器的使用 四、实验准备 参考课件1-5章内容及笔记。 五、实验要求 实验报告要求包含所有命令的执行结果(可截图) 六、实验内容 1.认识Linux,熟悉Linux桌面环境(KDE,GNOME),了解Linux文件系统结构。 2.用户创建(学号)----三种方式(命令行,配置文件,GUI)。 3.了解/etc/grub.conf文件内容,了解/etc/inittab文件内容,将系统默认运行级别改为3, 重启系统观察现象,再将默认运行级别改为5重启。 4.多用户体验---多用户登录,口令修改、虚拟控制台切换(Alt-Fn),用户通信(write,mesg)。 5.使用普通用户(学号为用户名)登录,运行基本命令: ●显示系统日期 ●列出当前系统中的所有用户 ●显示你的登录名 ●显示你的账号和root用户的登录信息 ●清屏 ●在你的屏幕上输出“out to lunch” ●使用历史命令查看过去输入的命令 ●运行历史列表中的任意一条命令 6.使用普通用户(学号为用户名)登录,对文件和目录操作: ●查看/etc/passwd文件,把这个文件复制到你的用户主目录,重命名userfile ●列出用户主目录下所有user开头的所有文件 ●分别使用man/help/info命令查看ls命令的帮助信息 ●建立文件ls.man(建立:方式man ls >ls.man ),分别使用less,more,tail,head 查看ls.man文件内容

实验4文件操纵

实验4、文件操作 学生姓名:李亚军学号:6100412196 专业班级:卓越计科121班 1.实验目的 通过编写文件读写及上锁的程序,进一步熟悉Linux 中文件I/O 相关的应用开发,并 且熟练掌握open()、read()、write()、fcntl()等函数的使用。 2.实验内容 在Linux 中FIFO 是一种进程之间的管道通信机制。Linux 支持完整的FIFO通信机制。本实验内容,通过使用文件操作,仿真FIFO(先进先出)结构以及生产者-消费者运行模型。本实验中需要打开两个虚拟终端,分别运行生产者程序(producer)和消费者程序(customer)。此时两个进程同时对同一个文件进行读写操作。因为这个文件是临界资源, 所以可以使用文件锁机制来保证两个进程对文件的访问都是原子操作。 先启动生产者进程,它负责创建仿真FIFO 结构的文件(其实是一个普通文件)并投 入生产,就是按照给定的时间间隔,向FIFO 文件写入自动生成的字符(在程序中用宏定 义选择使用数字还是使用英文字符),生产周期以及要生产的资源数通过参数传递给进程(默认生产周期为1s,要生产的资源数为10 个字符)。 后启动的消费者进程按照给定的数目进行消费,首先从文件中读取相应数目的字符 并在屏幕上显示,然后从文件中删除刚才消费过的数据。为了仿真FIFO 结构,此时需 要使用两次复制来实现文件内容的偏移。每次消费的资源数通过参数传递给进程,默认 值为10 个字符。 3.实验步骤 (1)实验流程图本实验的两个程序的流程图如图: 开始开始 (producer)(customer) 消费资源 创建FIFO结构文件(打印字符) 否 消费够了吗? 生产一个资源 是 上锁 上锁 将剩下的数据拷贝到 等待临时文件tmp中 一秒将“生产”的字符 写入到FIFO结构文件 用临时文件tmp覆盖 原数据文件,这样 模拟FIFO结构 解锁 解锁 生产完了吗? 删除临时文件 结束结束 图6.4 节流程图

实验10实验报告

安徽机电职业技术学院实验报告 一、实验目的 1、掌握文件操作的两个类:StreamReader和StreamWriter类来读写文本文件。 2、掌握通用对话框OpenFileDialog和SaveFileDiaglog类的使用,熟悉相关属性使用。 3、掌握如何设计自定义对话框,主窗体与对话框如何交换数据。 4、掌握菜单的设计与使用。 5、了解如何定义菜单的快捷键。 6、快捷菜单(右键菜单ContextMenu)的使用,请参见P449。 7、查找相关资料,了解工具栏(ToolBar)和状态条(StausBar)控件的使用。 8、熟悉System.IO命名空间有关文件与文件夹操作的类的使用。 二、实验内容 程序1、设计一个简单的类似于记事本的WPF应用程序,能够完成文本文件的读写功能,需要使用到通用对话框、自定义对话框及菜单控件。具体功能自行设计。 三、实验步骤 1、请参照课件12.操纵Windows应用程序.ppt中的要求,按程序1要求,创建一个记事本程序,具体功能自行定义。 四、程序运行结果截图 1、请选择程序1运行后的一个代表性截图放在下面: 2、请将打开文件对话框运行后的截图放在下面: 3、请将保存文件对话框运行后的截图放在下面: 4、设计的记事本程序,至少要有一个自定义对话框,如实现设定字体、设定字体大小、设定颜色等功能中的一个。将实现该功能的对话框运行后的窗体截图在下面。 5、其它你设计的功能,请将运行后的窗体截图话在下面:

五、程序源代码(用Winrar压缩后用附件提交,源代码中要有比较完备的注释),以下代码请粘贴于此: 1、实现读取文本文件的内容并显示在窗体的文本框中的程序段 2、实现将文本框中的文本保存到文件的程序段 3、实现调用自定义对话框,获取对话框的操作结果,并进行相应处理的程序段 (选做)4、在你的记事本中添加相应菜单,可以实现文件与文件夹的相应操作(如删除文件、复制文件、列举某文件夹下某种类型的所有文件等)。请将运行结果截图在下面,并将相关代码书写在下面。 六、思考题: 1、需要在打开文件时,筛选出相应类型的图片文件,如BMP文件,JPEG文件、GIF文件等,如何设定FileDialog的Filter属性? 2、使用“对象浏览器”,查找StreamReader类的ReadLine方法的信息。该方法的作用是什么?如何判断文件已经读取结束?请写出能实现该判断的表达式。 3、使用“对象浏览器”,查找File类的SetAttributes方法的信息,并记录下该方法的完整的说明信息。该方法的作用是什么?如何设置磁盘上某文件(如当前文件夹下的file.txt文件)为只读?请写出能实现该操作的语句。 七、收获,体会及问题(写得越详细、越个性化、越真实越好,否则我不知道你做这个实验的心路历程,也就无法充分地判断你是否是独立完成的这个实验、你是否在做这个实验时进行了认真仔细地思考、通过这个实验你是否在实践能力上得到了提高)

实验11文件

实验11.文件---10101 学生成绩管理(文件) 1.【问题描述】学生成绩管理,每个学生的数据包括学号、姓名、3门课的成绩,数 据保存在文件中(内存中只保留一个学生的信息,处理后写回文件)。分别用若干个函数实现如下各操作,根据选择执行相应功能。 1) 输入学生成绩; 2) 给出学号或姓名,找到该学生的信息。 3) 给出学号或姓名,修改某学生的信息。 4) 找出某门课程不及格的学生,并输出其学号和不及格课程的成绩; 若不存在,则打印no。 5) 给出所有学生的各科平均成绩和总平均成绩。 【输入形式】第一行为一个整数N,表示学生数;接下来的N行中每行包含5个数据:学号(字符串)、姓名(字符串)、3门课的成绩(成绩为整数);第N+2行为一个字符串,表示要查找的学生学号;第N+3行为6个数据(姓名、学号、姓名、3门课的成绩),表示要修改信息的学生姓名以及欲修改的该学生信息;第N+4行为数字(1、2或3),表示要查找的是第几门课程。 【输出形式】第1行为给定学号的学生信息;第2行为给定姓名的已经修改的学生信息;第3行为指定课程中不及格学生的学号以及不及格课程的成绩(各数之间由空格分隔);第4行为所有学生的各科平均成绩和总平均成绩(各数之间由空格分隔,保留两位有效数字)。 【样例输入】3 070001 ZhangLi 90 80 85 070002 WangHua 86 55 90 070003 ChenHai 58 42 84 070002 ChenHai 070003 ChenHai 58 42 90 2 【样例输出】070002 WangHua 86 55 90 070003 ChenHai 58 42 90 070002 55 070003 42 78.00 59.00 88.33 75.11 【样例说明】以样例中的输入输出数据作为测试数据,检查自己的程序正确与否。 【评分标准】本题有1个测试点,共2.0分。主要考察学生的文件操作能力。 请严格按照题目中的文件操作要求上传程序,否则扣减得分。 #include #include #include #define S_STU_LEN sizeof(struct s_stu) struct s_stu { char xh[20]; char xm[20]; int cj[3];

山东大学操作系统实验十实验报告

软件学院实验报告:10 实验题目:具有二级索引的文件系统姓名:陶旭涛 日期:2013-12-1 学号:201100300038 Email:1595242630@https://www.doczj.com/doc/4e11226878.html, 实验目的: Nachos的文件系统中保存文件内容所在扇区索引的“文件头“目前只占用一个扇区, 为了可以使Nachos文件系统创建较大的文件,将”文件头”扩大到两个扇区,也就是实现二级索引。 硬件环境: 软件环境: Linux操作系统,Nachos操作系统 实验步骤: 1,通过实验5的扩展文件大小的实验,了解了nachos 系统的对文件系统的管理。本次实验的目的主要是扩大Nachos系统可以创建的文件的大小,使用两个扇区来保存文件头的信息。 为了达到这个目的,首先了解nachos 自带的文件系统的文件头的结构: 保存在一个扇区中,第一个int保存了文件的字节数(numBytes),第二个int保存了使用的扇区数(numSectors),第三个数据结构是文件所在的各个扇区号(dataSectors[NumDiresct])。 也就是说,Nachos系统采用的是索引式的文件管理方式。 因而,要实现nachos文件系统的二级索引,可以使第一个索引节点(也就是原有的文件头那个扇区)的dataSectors数组的最后一个元素保留第二个索引节点(也就是第二个扇区)的引用(也就是扇区号)。 如果文件大小不超过一个索引节点可以保留的内容,则这个最后一个元素的值为-1。 2,通过分析可知,需要修改https://www.doczj.com/doc/4e11226878.html,中的内容。 代码如下: bool FileHeader::Allocate(BitMap *freeMap, int fileSize) { numBytes = fileSize; numSectors = divRoundUp(fileSize, SectorSize); if (freeMap->NumClear() < numSectors) return FALSE; // not enough space /*如果文件大小超过索引节点中保存扇区号的数目,则返回false*/ else if(NumDirect + NumDirect2 <= numSectors) return FALSE;//the filesys cannot support such big file

相关主题
文本预览
相关文档 最新文档