Re: [討論] 請問這個程式碼

看板C_and_CPP作者 (幻想的夢境)時間13年前 (2011/04/16 01:16), 編輯推噓3(3013)
留言16則, 8人參與, 最新討論串2/2 (看更多)
看了這個程式 我做了一點小小修改 還麻煩大家給個建議 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)

04/16 02:08, , 1F
用指標不會節省記憶體,另外我想問你的問題是什麼...?
04/16 02:08, 1F
我要表示的是,如果用指標來配置的話,那這樣就是程式裡面需要用到才用 而不會說一開始就宣告,這樣這塊記憶體其他程式就沒辦法用了

04/16 02:20, , 2F
malloc 忘了 free?
04/16 02:20, 2F
因為我要用到程式結束,所以沒有free也不要緊,不過最好還是要記得啦!!

04/16 02:53, , 3F
int LEN;
04/16 02:53, 3F
哈哈,這真的沒注意到

04/16 02:55, , 4F
* sizeof(char) 有寫沒寫是一樣的阿 XD
04/16 02:55, 4F
???

04/16 15:11, , 5F
void main()...幾零年代的勞東西了 =口=
04/16 15:11, 5F
DEV-C阿!!C都不熟了,怎麼學C++呢? ※ 編輯: jacky1989 來自: 123.192.76.53 (04/16 15:21) ※ 編輯: jacky1989 來自: 123.192.76.53 (04/16 15:22)

04/16 15:27, , 6F
ISO C 規定 main 一定是回傳 int, 你學的是之前的版本
04/16 15:27, 6F

04/16 15:27, , 7F
sizeof(char) 一定是 1, 你寫這樣只是佔版面而已
04/16 15:27, 7F

04/16 15:30, , 8F
"沒有 free 也不要緊"...你的概念有問題
04/16 15:30, 8F
是嗎?!我是用Dev-C 4.9.9.2耶,我知道char佔1bytes阿!!不過還是要配置阿!!! 我的意思是,我是要一直用到程式結束,所以程式執行完就會free了 最後我有講阿!!還是要記得加才對!! ※ 編輯: jacky1989 來自: 123.192.76.53 (04/16 15:39)

04/16 15:58, , 9F
雖然你程式看到的是虛擬記憶體, 但是實體記憶體還是跟
04/16 15:58, 9F

04/16 15:59, , 10F
別的程式搶著用, 不要只想到自己!! malloc(LEN) 跟
04/16 15:59, 10F

04/16 15:59, , 11F
malloc(sizeof(char)*LEN) 是一樣的, 但是寫後者只是
04/16 15:59, 11F

04/16 16:00, , 12F
代表你對語言還不熟, 多乘上一個東西不能多表達什麼
04/16 16:00, 12F

04/16 16:02, , 13F
你可以查查 gcc 3.4.2 預設是用什麼標準來編
04/16 16:02, 13F
我會去查的,感謝loveme00835的指教~~ ※ 編輯: jacky1989 來自: 123.192.76.53 (04/16 16:22)

04/16 19:54, , 14F
可以放棄4.9.9.2了...
04/16 19:54, 14F
那要用什麼?VS2008? VS2010? 這兩個要編譯的時候都要開一個專案,定義也得比較嚴謹 我們上課是用DEV-C,每次都還要副檔名一直轉換,其實頗麻煩的 有點感嘆怎麼學都趕不上工具更新 我一開始學是學Turbo C咧,←夠復古吧!! 那時候還是VS2005,我VS2005還沒摸熟 2008出來了,2008也還沒摸熟,2010出來了= =....... ※ 編輯: jacky1989 來自: 123.192.76.53 (04/16 20:31)

04/16 21:12, , 15F
你們學校老師怎麼都教老古董,VC從2003開始就都差不多
04/16 21:12, 15F

04/16 21:15, , 16F
可能學校老師年輕的時候就是學Turbo C 吧。
04/16 21:15, 16F
文章代碼(AID): #1Dg7s5th (C_and_CPP)
文章代碼(AID): #1Dg7s5th (C_and_CPP)