C语言实训小记

本次C语言实训从7.1到7.5,主要内容包括文件操作、BMP图像处理、wav文件混音、MFC编程和键盘钩子。通过实训,体验了程序员生活,学习了独立解决问题的方法,尤其是理解了BMP文件格式和MFC对话框编程。实训过程中,明白了基础扎实的重要性,并感受到编程的乐趣与挑战。

此次实训从7.1—7.5,主要就是在机房打代码,7.50—12.00,13.50—18.00,今天算是见识到了,hhhh(苦笑)

Day 1

第一天主要是回顾文件操作;

  1. 文件操作
    1.1. 文本文件内容显示
//从文件中读取并输出到窗口

#include <stdio.h>
#include <stdlib.h>
int main()
{
	char ch;
	FILE *fp;
	if((fp=fopen("d:\\1.txt","r"))==NULL)
	{
		printf("File can not open!\n");
		exit(0);
	}
	while(!feof(fp))
	{
		ch=fgetc(fp);
		printf("%c",ch);
	}
	fclose(fp);
	printf("\n");
	return 0;
}

1.2内存与文件数据的交换(就是从窗口输入数据写入到文件,把文件内容输出到数组中)

//从窗口输入数据写入到文件
#include <stdio.h>
int main()
{
	char a[10];
	FILE *fp;
	int i=0;
	printf("input :");
	gets(a);
	fp=fopen("d:\\3.txt","w+");
	while(a[i]!='\0')
	{
		fprintf(fp,"%c",a[i]);
		i++;
	}
	fclose(fp);
	printf("write over\n");
	return 0;
}
//把文件内容输出到数组中
#include <stdio.h>
int main()
{
	int b[10];
	int i,j;
	FILE* fp=fopen("d:\\3.txt","r+"); 
	if(fp==NULL)
	{
		printf("无文件");
		return -1;
	}
	for(j=0;j<10;j++)
	{
		fscanf(fp,"%d",&b[j]);
		printf("%d ",b[j]);
	}		
	printf("\n");
	fclose(fp);
	return 0;	
}

1.3获取文件长度,修改文件内容指针

#include <stdio.h>
#include <stdlib.h>
int main()
{
	FILE *fp1;
	unsigned char *f;
	long L;
	fp1=fopen("d:\\6.bmp","rb");
	fseek(fp1,0,2);
	L=ftell(fp1);
	f=(unsigned char*)malloc(L);
	rewind(fp1);
	fread(f,L,1,fp1);
	printf("%ld\n",L);
	fclose(fp1);
	return 0;
}
  1. 图像文件操作
    2.1BMP文件格式
    2.2修改BMP文件内容
    2.3创建一个自定义的BMP文件
    这部分相对就有点难度了,下午纠结了好久呢~~我们做的项目就是在一个空白BMP图片正中间用程序画一个圆,原理就是图片由许多像素构成,一个像素相当于一个点,通过更改对应点的颜色就可以画出圆,同时BMP文件是二进制文件形式储存,用WinHex打开,可以看到文件的内容
    在这里插入图片描述前面54个字节是文件头,16进制中FF FF FF就是255 255 255,对应的就是白色。而且图上第一个点是在图片的最左下角,以左下角的点为原点做坐标系来求坐标。然后利用中学的圆的参数方程就可以算出(x,y)。
    具体步骤是:
    (1)整个读取文件,存放到内存buf()中
    (2)计算圆上的点(x,y),buf()中(x,y)的位置,修改颜色
    (3)将整个内存中的buf写入另一文件

一天就这么充实的过去了23333,真的感觉椅子坐久了,腰酸背痛,不太舒服,终于理解程序员的难受了~~~想想以后可能就要这样了,有点小失落,不过还好,信安不至于整天打代码,???但是学的东西还有很多,既然自己选择了这个,就要好好坚持下去,会有好结果的,要加油啊!!!今天老师还说到了一位女生,每份代码都会合上书之后,自己打20遍,最后成了一名优秀的程序员。虽然我不太想当程序员,但是这种精神还是值得我们学习的。不管做什么都要坚持,相信功夫不负有心人,加油(●’◡’●)!!!

Day 2

第二天我们进一步运用了文件操作,进行wav文件混音操作,这个项目在了解原理之后,我还是感觉有点困难。看了别人给的代码还是感觉云里雾里,请教了老师之后,老师不愧是老师,一下子就发现了我的问题。老师教导我,要根据他给的思路,自己捋一捋然后打出代码,光看别人的,不仅和自己的思路不一样,还很浪费时间,不管怎样,自己都要捋清思路打代码。老师给我们讲了一遍思路之后,又在老师指导下,终于运行成功了。以后还可以尝试自己创建wav文件,(●’◡’●),做出一首曲子。
此次实训一大收获就是学习方法上的,一定要自己多打代码呀!!!

Day 3

第三天老师教我们MFC编程,就是用VC6.0建立MFC AppWizard工程,然后基于对话框进行一些功能实现的编程。对话框上的按钮赋予代码之后运行就能执行相应的功能,和以前在DOS窗口运行不一样,感觉又打开了新世界的大门,不过在对话框添加按钮的时候,我感觉高中就已经学过了这种是怎么回事hhh不过MFC编程比较复杂,一时间老师也讲不完,我们也难以吸收,我们就把老师的代码ctrl+c,ctrl+v然后可以正常运行,再看懂代码就行了。据老师所说,会copy也是一种技能hhhh,不过以后工作了遇到的问题基本上都要靠自己解决,百度不到的。。。
最后,一天下来的任务就是基于老师所讲的,完成一个包含多种功能的对话框程序,掌握了老师讲的也就没难度(●’◡’●)。不过在运用fopen函数的时候还是出错了,不过大佬一眼就看出来了,里面第一个参数是文件的地址,我画蛇添足了,通过一个变量传地址,误以为只是文件路径字符串(实际是文件地址),多加了双引号。看来基础知识还是没有掌握牢靠啊,以后看书要仔细了!

Day 4

老师主要讲了窗口画图,和资源管理器的设置,接着看代码学习呀!!!

Day 5

最后一天了,老师给我们讲了安全有关的键盘钩子,就是通过键盘钩子这样一个软件,就可以在操作系统中截取用户键盘输入的信息,截取之后可以拦截(就是私吞,不发出去了),也可以修改信息,但是钩子必须在动态链接库里才能生效,不过可惜老师不发代码给我们,估计是怕我们恶作剧hhh
比较尴尬的就是我私自改了老师的代码,结果还是报错,老师表示很无语,你不要乱改我的代码啊,(要不是之前运行报错,我也不会想着改代码了qaq)
后来重新解压运行了老师的代码,竟然就好了,无语,垃圾VC,毁我青春。

实训就这样结束了,感觉还挺有意义的。第一次整天坐在机房打代码,体验了一把程序猿的生活,虽然才开始有点难受,但渐渐也就还行,收获满满,继续加油呀!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值