[問題] 新手學C

看板C_and_CPP作者 (宅?)時間15年前 (2010/08/04 18:14), 編輯推噓1(1011)
留言12則, 4人參與, 最新討論串1/2 (看更多)
遇到的問題: (題意請描述清楚) 我看書本 scanf() 這個函數 可以接收輸入的字串在按下ENTER前都接收進來 (可能是我誤會書上的意思 ...) 我的code 如下: #include <stdio.h> #include <string.h> int main(int arge,char* argv[]) { char num1[10]; int leng=0; printf("輸入一個字串:"); scanf("%s",&num1); leng = strlen(num1); printf("%d",leng); return 0; } 希望得到的正確結果: 我以為輸入 >>a b c leng變數應該是 5 (應該連空格都一起存進去array才對..) 程式跑出來的錯誤結果: 執行出來 leng=1 我試著印出 陣列的東西 卻跑出 a @ *@@ b4@ 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) Microsoft Visual Studio 2005 , Vista 補充說明: 之前不認真現在才開始想學好C 可能還有很多不會的地方 或是觀念不對的地方 希望還有大大能夠幫我解答 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.24.63.216

08/04 18:21, , 1F
他只會拿到a 然後你印的時候後面沒有\0 所以會一直印下去
08/04 18:21, 1F

08/04 18:21, , 2F
&
08/04 18:21, 2F

08/04 18:23, , 3F
疑我有沒有推錯阿XD 好像跟cin弄混了 Orz
08/04 18:23, 3F

08/04 18:27, , 4F
應該是會補\0進去 太久沒碰 抱歉
08/04 18:27, 4F

08/04 18:28, , 5F
還有就是二樓說得變數不用再加& 因為他已經被當成指標存
08/04 18:28, 5F

08/04 18:33, , 6F
感謝樓上兩位的講解 我把&改掉 也是一樣..
08/04 18:33, 6F

08/04 18:33, , 7F
他碰到空格就開始亂掉了...
08/04 18:33, 7F

08/04 18:35, , 8F
scanf遇到空白鍵會當成\0(如果沒記錯)所以你算長度的時
08/04 18:35, 8F

08/04 18:36, , 9F
只會有一個字元。
08/04 18:36, 9F

08/04 18:41, , 10F
你要使用gets()才會包含空白字元。
08/04 18:41, 10F

08/04 18:43, , 11F
gets(num1);
08/04 18:43, 11F

08/05 02:31, , 12F
感謝樓上 我照你方法成功 謝謝拉 又學到一點了
08/05 02:31, 12F
文章代碼(AID): #1CMJsUHh (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1CMJsUHh (C_and_CPP)