[討論] 請問這個程式碼

看板C_and_CPP作者 (要不回那些快樂)時間14年前 (2011/04/15 09:50), 編輯推噓4(405)
留言9則, 2人參與, 最新討論串1/2 (看更多)
這是一個輸入密碼的範例程式 01. #include <stdio.h> 02. #include <stdlib.h> 03. #include <conio.h> 04. int main(void) 05. { 06. char a[80],key; 07. int i=0; 08. while(1) 09. { 10. key=getch(); 11. if(key=='\b') 12. { 13. printf("\b \b"); 14. if(i>0) 15. i--; 16. } 17. else if(key=='\r') 18. { 19. printf("\n"); 20. break; 21. } 22. else 23. { 24. printf("*"); 25. a[i]=key; 26. i++; 27. } 28. } 29. a[i]='\0'; 30. printf("%s\n",a); 31. system("pause"); 32. return 0; 33. } 我想請問一下 程式的第11行~第21行 \b是代表倒退一格 \r是代表歸位 在這個程式中是要幹嘛用的呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 125.227.68.178

04/15 18:45, , 1F
字串結束字元嗎? 有點忘了
04/15 18:45, 1F

04/15 18:47, , 2F
XDD 推錯
04/15 18:47, 2F

04/15 18:49, , 3F
應該是用來判斷 特殊字元的密碼吧
04/15 18:49, 3F

04/15 18:53, , 4F
打錯是 是用來判度 getch 所讀入的char 來顯示所打
04/15 18:53, 4F

04/15 18:53, , 5F
的密碼
04/15 18:53, 5F

04/15 18:57, , 6F
\r 是字串結束的字元 \b是backspace的字元
04/15 18:57, 6F

04/15 19:02, , 7F
應該說 按Enter 的字元是'\r' 一直打錯
04/15 19:02, 7F

04/15 19:16, , 8F
Press "Enter" 應是送出 "\r\n", 也有些系統只送 "\n"
04/15 19:16, 8F

04/15 19:17, , 9F
故截掉 \r。\b 為「←」這個鍵,所以把輸入錯的psw清掉.
04/15 19:17, 9F
文章代碼(AID): #1Dg1JEMF (C_and_CPP)
文章代碼(AID): #1Dg1JEMF (C_and_CPP)