標(biāo)題: 項(xiàng)目總結(jié) [打印本頁(yè)]

作者: liuyy    時(shí)間: 2015-1-11 23:45
標(biāo)題: 項(xiàng)目總結(jié)
拿到這個(gè)項(xiàng)目的時(shí)候,我第一反應(yīng)是用鏈表嵌套鏈表的結(jié)構(gòu),這樣對(duì)于各項(xiàng)功能的實(shí)現(xiàn)都很方便,結(jié)果后來(lái)還是沒(méi)弄出來(lái),白白浪費(fèi)了一天的時(shí)間。我的邏輯思維是沒(méi)錯(cuò)的,但是這個(gè)鏈表嵌套鏈表還是有很大難點(diǎn)的,等不忙了再研究研究。
大多數(shù)的錯(cuò)誤就是段錯(cuò)誤,最典型的是理武兄的問(wèn)題,鏈表head沒(méi)有開(kāi)空間,還有一個(gè)典型錯(cuò)誤是數(shù)組賦值 ,一定要加&,不加&編譯時(shí)不會(huì)報(bào)錯(cuò),但是運(yùn)行會(huì)出現(xiàn)段錯(cuò)誤。還有就是坑了我的錯(cuò)誤命令gcc –o main.c a.out –Wall。
我犯的最大的小錯(cuò)誤,是在讀取文件的時(shí)候,想判斷管理員密碼是否為’”\0”,如果是”\0”,則默認(rèn)初始密碼,如果不為0,則將文件中保存密碼賦值給管理員,我的源代碼是這樣的
int load(stu_t *head,char (*admin)[30]){
       stu_t*cur = NULL,*cur2=NULL;
       FILE*fp = NULL;
       charad_pass[30] = "\0";
       inti=0;
       if(NULL== head){
              return;
       }
       fp=fopen("data","a+");
       if(NULL== fp){
              fclose(fp);
              return1;
       }
       fread(ad_pass,sizeof(char)*30,1,fp);
       //讀取管理員密碼
       if(ad_pass,!= ‘\0’){
              strcpy(admin[1],ad_pass);
              for(i=0;admin[1][ i]!= '\0';i++){
                     admin[1][ i]-= 'a';
                     //管理員密碼解密,每一位減'a'
              }
       }
……省略
咋一看,覺(jué)得沒(méi)錯(cuò),編譯也沒(méi)報(bào)錯(cuò),但是就是管理員賬戶(hù)密碼一直無(wú)法登陸,后來(lái)在老師的指引下,我知道了自己犯的錯(cuò)誤。其中還發(fā)現(xiàn)一個(gè)嚴(yán)重的問(wèn)題,就是我的語(yǔ)言組織能力不好,不能一句話(huà)切入重點(diǎn),就像毛毛說(shuō)的,總是有很多鋪墊。。。。正確的代碼應(yīng)該是下面這樣,ad_pass 是一個(gè)字符數(shù)組,ad_pass是首地址,我要判斷它是否為空,應(yīng)該比較兩個(gè)數(shù)組才對(duì),可是我判斷的是首地址。。。。然后就這么錯(cuò)了。
if(strcmp(ad_pass,"\0") != 0){
strcpy(admin[1],ad_pass);
              for(i=0;admin[1][ i]!= '\0';i++){
                     admin[1][ i]-= 'a';
                     //管理員密碼解密,每一位減'a'
              }
還有,今天寫(xiě)驗(yàn)證碼函數(shù),又寫(xiě)錯(cuò)了,一直提示驗(yàn)證碼輸入錯(cuò)誤。還有每個(gè)函數(shù)都要 有入?yún)Ⅱ?yàn)證,其他的就沒(méi)什么了,有些第一次遇到的問(wèn)題,也根據(jù)自己的經(jīng)驗(yàn)寫(xiě)出了算法?偟膩(lái)說(shuō),還是相對(duì)輕松的。
還有一個(gè)面試官可能問(wèn)到的問(wèn)題,大概程序如下:
2.int main(){
       stu_t *user = NULL,cur = NULL;
      
if(use(create(sizeof(stu_t)))!=0){
func1();……
func2……
inserte_head(user,cur);
}
問(wèn):user是否為空?
user 沒(méi)有賦值語(yǔ)句,沒(méi)有開(kāi)空間,當(dāng)然是空的,不能被表面現(xiàn)象蒙蔽了雙眼。
還有一個(gè)問(wèn)題,就是寫(xiě)一個(gè)函數(shù),修改指針的值,一定要是指向指針的指針。逐級(jí)加一個(gè)指針。這個(gè)是我們老師曾經(jīng)這么干過(guò),






歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1