看板 C_and_CPP 關於我們 聯絡資訊
看了這個程式 我做了一點小小修改 還麻煩大家給個建議 void main(){ char *pass; int i=0,LEN=8; pass=(char *)malloc(sizeof(char)*LEN); printf("Enter password:"); while(*(pass+i)!='\r'&& i!=LEN ){ *(pass+i)=getch(); switch (*(pass+i)){ case '\b': if(i>0){ printf("\b \b"); i--; } break; case '\r': LEN=i; break; default: printf("*"); i++; break; } } printf("\n"); for(i=0;i<=LEN;i++) printf(" %c",*(pass+i)); printf("\n"); system("pause"); } 我是改用指標去寫,這樣可以節省記憶體配置 LEN是決定最大長度 本來是#define LEN 8啦 不過設想到有可能USER沒輸入到這麼長就按ENTER了 下面又要依序印出來 所以就改成全域變數 如果輸入滿8個 也會自動跳出 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.192.76.53 ※ 編輯: jacky1989 來自: 123.192.76.53 (04/16 01:23)
james732:用指標不會節省記憶體,另外我想問你的問題是什麼...? 04/16 02:08
我要表示的是,如果用指標來配置的話,那這樣就是程式裡面需要用到才用 而不會說一開始就宣告,這樣這塊記憶體其他程式就沒辦法用了
COLDTURNIP:malloc 忘了 free? 04/16 02:20
因為我要用到程式結束,所以沒有free也不要緊,不過最好還是要記得啦!!
tropical72:int LEN; 04/16 02:53
哈哈,這真的沒注意到
loveme00835: * sizeof(char) 有寫沒寫是一樣的阿 XD 04/16 02:55
???
xatier:void main()...幾零年代的勞東西了 =口= 04/16 15:11
DEV-C阿!!C都不熟了,怎麼學C++呢? ※ 編輯: jacky1989 來自: 123.192.76.53 (04/16 15:21) ※ 編輯: jacky1989 來自: 123.192.76.53 (04/16 15:22)
loveme00835:ISO C 規定 main 一定是回傳 int, 你學的是之前的版本 04/16 15:27
loveme00835:sizeof(char) 一定是 1, 你寫這樣只是佔版面而已 04/16 15:27
loveme00835:"沒有 free 也不要緊"...你的概念有問題 04/16 15:30
是嗎?!我是用Dev-C 4.9.9.2耶,我知道char佔1bytes阿!!不過還是要配置阿!!! 我的意思是,我是要一直用到程式結束,所以程式執行完就會free了 最後我有講阿!!還是要記得加才對!! ※ 編輯: jacky1989 來自: 123.192.76.53 (04/16 15:39)
loveme00835:雖然你程式看到的是虛擬記憶體, 但是實體記憶體還是跟 04/16 15:58
loveme00835:別的程式搶著用, 不要只想到自己!! malloc(LEN) 跟 04/16 15:59
loveme00835:malloc(sizeof(char)*LEN) 是一樣的, 但是寫後者只是 04/16 15:59
loveme00835:代表你對語言還不熟, 多乘上一個東西不能多表達什麼 04/16 16:00
loveme00835:你可以查查 gcc 3.4.2 預設是用什麼標準來編 04/16 16:02
我會去查的,感謝loveme00835的指教~~ ※ 編輯: jacky1989 來自: 123.192.76.53 (04/16 16:22)
tomap41017:可以放棄4.9.9.2了... 04/16 19:54
那要用什麼?VS2008? VS2010? 這兩個要編譯的時候都要開一個專案,定義也得比較嚴謹 我們上課是用DEV-C,每次都還要副檔名一直轉換,其實頗麻煩的 有點感嘆怎麼學都趕不上工具更新 我一開始學是學Turbo C咧,←夠復古吧!! 那時候還是VS2005,我VS2005還沒摸熟 2008出來了,2008也還沒摸熟,2010出來了= =....... ※ 編輯: jacky1989 來自: 123.192.76.53 (04/16 20:31)
purpose:你們學校老師怎麼都教老古董,VC從2003開始就都差不多 04/16 21:12
attomahawk:可能學校老師年輕的時候就是學Turbo C 吧。 04/16 21:15