"c语言文件实验报告 文本处理函数设计及流程图"

0 下载量 153 浏览量 更新于2024-01-04 收藏 35KB DOC 举报
C语言实验报告 本实验的目的是通过编写函数upCopy,掌握指针的概念,学会定义和使用指针变量,正确使用变量的指针和指向变量的指针变量,正确使用数组的指针和指向数组的指针变量以及正确使用字符串的指针和指向字符串的指针变量。 实验内容是编写函数upCopy(char *new,char *old),该函数将old指针所指向字符串中的大写字母复制到new指针指向的字符串中,并在主函数中调用该函数。提供了以下要求: 1. 画出算法的流程图。 2. 在主函数中以直接初始化的方式输入一个字符串。 3. 在主函数中调用upCopy()函数,输出old指针和new指针指向的字符串。 算法描述流程图如下: +-----+ +------->| 开始 | | +-----+ | | +-----+ +------->| 输入 | | +-----+ | | | +-----+ +------->| 调用 | | | upCopy() | | +-----+ | | | +-----+ +------->| 输出 | | +-----+ | | +-----+ +------->| 结束 | +-----+ 源程序如下: #include <stdio.h> void upCopy(char *new, char *old) { int i; for (i = 0; old[i] != '\0'; i++) { if (old[i] >= 'A' && old[i] <= 'Z') { new[i] = old[i]; } } new[i] = '\0'; } int main() { char old[] = "AbCdEfG"; char new[20]; upCopy(new, old); printf("old指针指向的字符串为:%s\n", old); printf("new指针指向的字符串为:%s\n", new); return 0; } 在该程序中,首先定义了一个upCopy函数,该函数接受两个参数,分别是指向字符的指针new和指向字符的指针old。在函数内部,使用循环遍历old指针所指向的字符串,如果遍历到的字符是大写字母,则将其复制到new指针指向的字符串中。 在主函数中,定义了一个字符数组old,并以直接初始化的方式赋值为"AbCdEfG"。另外还定义了一个字符数组new,作为upCopy函数中new指针的接收参数。 然后调用upCopy函数,将new指针和old指针传入。函数执行后,new指针指向的字符串将被修改为old指针指向字符串中的大写字母。 最后,通过printf函数输出old指针和new指针指向的字符串。 通过以上源程序的运行,可以得到如下结果: old指针指向的字符串为:AbCdEfG new指针指向的字符串为:ACEG 总结:本次实验通过编写函数upCopy,加深了对指针的理解和应用,掌握了指针的概念,学会了定义和使用指针变量,正确使用变量的指针和指向变量的指针变量,正确使用数组的指针和指向数组的指针变量以及正确使用字符串的指针和指向字符串的指针变量。通过流程图和源程序的分析,我们可以清晰地了解到整个程序的执行过程,并可以得到预期的结果。这个实验对深入理解C语言的指针概念和应用具有重要的意义。
2023-03-11 上传
文件管理 一、实验目的: 1.了解os中文件的组织和管理。 2.熟悉文件中所用的数据结构。 二、实验要求: 1. 设计一个N个用户的文件系统,每个用户最多保存m个文件。 2. 限制用户在一次使用中只能打开L个文件。 3. 系统应能检查输入命令的正确性,出错能显示出原因。 4. 对文件必须设置保护措施,如只读、写、执行等。在每次打开时再次设置保护级别,即 可有二级保护。 5. 对文件的操作至少有以下几条命令 create:建文件 delete:删文件 open:打开文件 close:关闭文件 read:读文件 write:写文件 举例:主文件目录 mfd=record username :string[maxlen]; files :array[1..L] of ufd; ofiles :arrau[1..S] of uod end; 用户打开文件目录表: uod=record filename:string[maxlen]; attrib:attrib; len:integer; status:(open,create); rp,up:integer; end; 用户文件目录: ufd=record fielname:string[maxlen]; attribΛro,rw); len:integer; addr:integer; end; 流程图: 开始 输入用户名 在MFD中找到该用户名 显示该用户名UFD中所有文件 初始化AFD 操作 命令 CREATE DELTET OPEN CLOSE READ WRITE 保护当前文件目录 结束 二、主要数据结构 界面采用VC6 MFC环境开发 #define MAXFILE 20 //每个用户最多保存20个文件 #define MAXUSER 10 //假想文件系统最多支持的人数 #define BLOCKSIZE 32 //虚拟磁盘中物理块为每块32字节 #define DISKSIZE BLOCKSIZE*1000 //虚拟磁盘容量为1000*32=32K struct UFD //说明文件项的结构数组 { char FileName[15]; char Time[16]; //文件建立或修改时间 如2003/5/6 12:00 bool IsExist; //文件是否存在,删除时标为0 bool IsShared; //共享标记,共享文件可被其它用户所访问 bool AttrRead; //文件是否可读 bool AttrWrite; //文件是否可写 bool AttrExecute; //文件是否可执行 HTREEITEM treeNode; //用于树控件显示的结点句柄 USHORT FileLen; //文件占用字节数 USHORT BlockNum; //文件占用的物理块数 USHORT FileLink[100];//文件物理块地址数组,每块32字节,限定一个文件最大100*32=3200字 节 }; struct MFD { char UserName[10]; //主目录用户名 bool IsExist; //该用户否存在 UFD ufd[MAXFILE]; //用户文件数组 USHORT nItem;//UFD个数 }; struct HEADBLOCK { BYTE pStack; //堆栈指针 SHORT pBlock[10]; //块号 pBlock[10]是下一个盘块号逻辑地址 }; struct BLOCK //虚拟磁盘的物理块数据结构 { union{ BYTE block[32];        //一块为32字节 HEADBLOCK HeadInfo; }; }; struct FAT { BLOCK SuperBlock; //超级块,指示第一个空闲块逻辑号 USHORT MaxOpen; //该用户同时可打开的最大文件数 USHORT UserNum; //最户数 MFD Mfd[MAXUSER]; //最多可支持10个用户 }; //空闲块成组链接法 bool OpenList[MAXUSER][MAXFILE]; //描述文件是否打开的布尔型数组 FAT FileFAT;           //描述文件记录项的FAT结构 CFile FATIO; //负责和VDISK.DAT打交道的文件句柄 CString CurrentUser; //当前登录的用户名 Int CurrentID; //前前登录的用户标识号 说明:本实验采用模拟文件结构的方法,把记录用户帐号,用户文件和磁盘块的信息 用当前目录下的VDISK.DAT来记录,可以把VDISK.DAT看成是一个虚拟的磁盘,其头部是 FAT结构,用来记录各个用户和文件信息,紧接着是空闲