C语言文件操作实验:替换与显示文本文件内容

需积分: 0 2 下载量 185 浏览量 更新于2024-08-04 收藏 20KB DOCX 举报
"实验8 文件操作实验" 本实验主要关注的是文件操作,包括文本文件和二进制文件的读写,以及在C语言中如何处理这些操作。实验的目的是让学生熟悉不同类型的文件在磁盘上的存储方式,并熟练掌握流式文件的读写技巧。 8.2.1 文件类型的程序验证题 这个部分的代码展示了如何打开并写入二进制文件和文本文件。程序首先创建了两个文件指针`fp1`和`fp2`,分别用于写入二进制数据和文本数据。`fwrite()`函数被用来将两个`short`类型的数值(`a`和`b`)写入`fp1`所指向的二进制文件,而`fprintf()`则将它们以16进制形式写入`fp2`所指向的文本文件。接着,程序读取并显示了两个文件的内容。 当`sizeof(short)`改为`sizeof(char)`时,每次写入的数据量会变小,因为`short`通常占用2个字节,而`char`通常占用1个字节。这会导致二进制文件的输出发生变化,每个`short`会被拆分成两个`char`,并且在读取时可能会产生不预期的结果。 将`fprintf(fp2,"%hx%hx",a,b)`改为`fprintf(fp2,"%d%d",a,b)`,输出格式也会改变。原本的`%hx`是16进制表示,改用`%d`后,数值将以十进制形式输出,因此文本文件的内容会呈现不同的数字。 8.2.2 源程序修改替换题 在这个部分,程序应该接受命令行参数,打开指定的文本文件并将其内容显示在屏幕上。然而,程序存在逻辑错误,没有正确地读取和打印文件内容。程序首先检查命令行参数是否正确,然后尝试打开指定的文件。如果文件无法打开,程序会给出错误提示并退出。 要修复这个逻辑错误,我们需要添加读取文件内容的代码。可以使用`fgetc()`函数逐字符读取文件,直到文件结束符EOF。读取到的字符应该通过`putchar()`函数输出到屏幕。这样修改后的程序才能正确显示文件内容。 ```c if((fp=fopen(argv[1],"r"))==NULL){ printf("Can't open %s file!\n", argv[1]); exit(-1); } while((ch=fgetc(fp)) != EOF) { putchar(ch); } fclose(fp); ``` 这个实验提供了关于文件操作的实践经验,包括文件的创建、读取、写入,以及处理不同文件类型(文本和二进制)的方法。通过这些练习,学生可以加深对C语言文件I/O的理解,这对于任何涉及文件处理的软件开发工作都是至关重要的。