代码改变世界

门禁项目小结(一)我的部分

2011-05-26 16:10  sensensen  阅读(498)  评论(0编辑  收藏  举报

背景:

      前段时间被要求做了一个门禁系统,自从发现博客园这样一个地方以来,小结成为了我生活必须的一部分,做完一个项目、面完一场试等等。项目应该来说已经半完结了,那么来复习一下在项目中学到的内容、用到的内容以及一些个方法技巧。

1、在写文件搜索路径的时候,有写两个\\,其中一个是转义字符,另一个才是根目录。这部分代码呢在我的firstsearch下,下面贴出它的核心代码:

核心代码中判断右边是否是\,我觉得比较有意思,然后不管三七二十一都要加上“*.*”不然会后面会出现错误。然后用cfindfile类型的变量运行findfile

View Code
1 CFileFind ff;
2 CString dirFile = dirName;
3 if(dirFile.Right(1) != "\\")
4 dirFile += "\\";
5 dirFile += "*.*";
6
7 bool result = ff.FindFile(dirFile);
8 if (result)
9 {
10 if (QueueIn(&dirQueue, dirName) == 0)
11 {
12 printf("Error: Queue In Error!\n");
13 return 0;
14 }
15 }
16 else
17 {
18 printf("Error: Wrong Dir!\n");
19 return 0;
20 }
21
22 while(!QueueIsEmpty(&dirQueue))
23 {
24 QueueOut(&dirQueue, outDir);
25 memset(tmpDir, 0, sizeof(tmpDir));
26 strcat(tmpDir, outDir);
27
28 printf(outDir);
29 printf("\n");
30 CString tmpFile = outDir;
31 if(tmpFile.Right(1) != "\\")
32 tmpFile += "\\";
33 tmpFile += "*.*";
34 result = ff.FindFile(tmpFile);
35 while(result)
36 {
37 result = ff.FindNextFile();
38 CString dirPath = ff.GetFilePath();
39 if (!ff.IsDots())
40 {
41 memset(tmpDir, 0, sizeof(tmpDir));
42 for(int i=0;i <dirPath.GetLength();i++)
43 {
44 tmpDir[i]=dirPath[i];
45 }
46 QueueIn(&dirQueue, tmpDir);
47 }
48 }
49 }
50 ff.Close();

得到地址的办法就是getfilepath(),判断是不是文件夹里面有的.或者..则用ff.IsDots判断。
2、CString中可以直接通过+来把字符连贯到一起。CString有一个.Format方法,这种方法可以把一些不是CString的数据类型转换成CString.
eg:这样可以直接在后面加
CString str = "Some Data";
str.Format("%s%d", str, 123); 
然后:
string 这个要特别注意一下。
3、文件的读写fread,fwrite,fscanf,fprintf
首先是定义一个FILE *fp指针,然后fopen一个文件,在其中有两个参数,一个指明文件名,一个指明打开的方式,是只读,只写,还是可读,可写,写的话是不是追加,文件的形式是不是二进制。fopen的返回值看是不是null,是的话说明读取失败,不是则读取成功,可以进行后面操作。其后读文件用fread,写文件用fwrite,fread和fwrite都有四个参数buffer,size,count,stream,最后一个参数是文件,buffer是要读入或者写出变量,size是每个写的元素的大小,是几个字节,count写几个这样的元素,每个这样的元素大小都是size.最后的最后都要fclose(fp)。

这里要注意,就是QQ问到过的一个面试题,说怎么读取一个文件。那么就是说要先定义一个FILE*fp类型,然后fopen,然后fread,最后fclose。
4、指针注意申明了以后要赋初值,初始化,如->new Feature;不然是不知道指向哪里的。
还要记得delete和free。
new 用delete,malloc用free.