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

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






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