作者joans (宅?)
看板C_and_CPP
標題[問題] 新手學C
時間Wed Aug 4 18:14:51 2010
遇到的問題: (題意請描述清楚)
我看書本 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
推 nowar100:他只會拿到a 然後你印的時候後面沒有\0 所以會一直印下去 08/04 18:21
→ netsphere:& 08/04 18:21
→ nowar100:疑我有沒有推錯阿XD 好像跟cin弄混了 Orz 08/04 18:23
→ nowar100:應該是會補\0進去 太久沒碰 抱歉 08/04 18:27
→ nowar100:還有就是二樓說得變數不用再加& 因為他已經被當成指標存 08/04 18:28
→ joans:感謝樓上兩位的講解 我把&改掉 也是一樣.. 08/04 18:33
→ joans:他碰到空格就開始亂掉了... 08/04 18:33
→ MaconChou:scanf遇到空白鍵會當成\0(如果沒記錯)所以你算長度的時 08/04 18:35
→ MaconChou:只會有一個字元。 08/04 18:36
→ MaconChou:你要使用gets()才會包含空白字元。 08/04 18:41
→ MaconChou: gets(num1); 08/04 18:43
→ joans:感謝樓上 我照你方法成功 謝謝拉 又學到一點了 08/05 02:31