C语言第6次上机,c语言6次上机总结(9页)-原创力文档

该实验报告涉及C语言的文件操作,包括文本文件和二进制文件的读写,以及文件指针的使用。实验内容包括验证文件读写效果,分析不同数据类型输出的差异,并要求实现字符串首字母大写的转换以及设计一个通讯录管理程序。实验旨在提升对文件处理和程序设计的理解与实践能力。
摘要由CSDN通过智能技术生成

C语言程序设计 实验报告

班级 日期

学生姓名 学号

第 6 次上机

实验 文件实验

(一) 实验目的

(1)熟悉文本文件和二进制文件在磁盘中的存储方式;

(2)熟练掌握流式文件的读写方法。

(二) 实验内容及要求

1.文件类型的程序验证

设有程序:

#include

void main(void)

{

short a=0x253f,b=0x7b7d;

char ch;

FILE *fp1,*fp2;

fp1=fopen("d:\\abc1.bin","wb+");

fp2=fopen("d:\\abc2.txt","w+");

fwrite(&a,sizeof(short),1,fp1);

fwrite(&b,sizeof(short),1,fp1);

fprintf(fp2,"%hx %hx",a,b);

rewind(fp1); rewind(fp2);

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

putchar(ch);

putchar('\n');

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

putchar(ch);

putchar('\n');

fclose(fp1);

fclose(fp2);

}

(1) 请思考程序的输出结果,然后通过上机运行来加以验证。

(2)将两处sizeof(short)均改为sizeof(char)结果有什么不同,为什么?

(3)将fprintf(fp2,"%hx %hx",a,b) 改为 fprintf(fp2,"%d %d",a,b)结果有什么不同。

(1)?%}{

253f 7b7d

(2)

改后只把a和b所指向的1个字节(低字节)输出到fp1,舍去了高字节

(3)fp2输出a,b的十进制数字形式

2.源程序修改、替换

将指定的文本文件内容在屏幕上显示出来,其命令行的格式为:

type filename

(1) 下面源程序中存在什么样的逻辑错误(先观察执行结果)?请对程序进行修改、调试,使之能够正确完成指定任务。

源程序:

#include

#include

void main(int argc, char* argv[])

{

char ch;

FILE *fp;

if(argc!=2){

printf("Arguments error!\n");

exit(-1);

}

if((fp=fopen(argv[1],"r"))==NULL){ /* fp 指向 filename */

printf("Can't open %s file!\n",argv[1]);

exit(-1);

}

while(ch=fgetc(fp)!=EOF) /* 从filename中读字符 */

putchar(ch); /* 向显示器中写字符 */

fclose(fp); /* 关闭filename */

}

(2)用输入输出重定向freopen改写上述源程序中的main函数。

3.程序设计

编写并上机调试运行能实现以下功能的程序:

(1)编写一个程序,实现以下功能:从键盘输入一行英文句子,将每个单词的首字母换成大写字母,然后输出到一个磁盘文件“test”中保存。

(2) 设计一个通信录管理程序,程序应有以下10个选项:

① 录入每个联系人的基本信息(至少应有姓名、单位、电话、邮件地址)。

② 从磁盘文件中读取记录到内存。

③ 保存记录到磁盘文件。

④ 修改记录。

⑤ 插入一条记录。

⑥ 删除一条记录。

⑦ 显示所有的记录。

⑧ 查找某条记录(用二分法)。

⑨ 按姓名对记录升序排序。

⑩ 退出。

要求:

① 用链表结构。

② 采用结构化程序设计,将每个功能定义成函数。

③ 应有用户界面,提供菜单选项。

(1)

#include

void main()

{

char str[100];

FILE *p;

int i,len=0;

printf("输入英文正文:\n");

while((str[len]=getchar())!='\n')

{

len++;

}

for(i=0;i

if(str[i]=' '&&str[i+1]!='\n')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值