此次实训从7.1—7.5,主要就是在机房打代码,7.50—12.00,13.50—18.00,今天算是见识到了,hhhh(苦笑)
Day 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;
}
- 图像文件操作
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,毁我青春。
实训就这样结束了,感觉还挺有意义的。第一次整天坐在机房打代码,体验了一把程序猿的生活,虽然才开始有点难受,但渐渐也就还行,收获满满,继续加油呀!!!
本次C语言实训从7.1到7.5,主要内容包括文件操作、BMP图像处理、wav文件混音、MFC编程和键盘钩子。通过实训,体验了程序员生活,学习了独立解决问题的方法,尤其是理解了BMP文件格式和MFC对话框编程。实训过程中,明白了基础扎实的重要性,并感受到编程的乐趣与挑战。
2834

被折叠的 条评论
为什么被折叠?



