看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) visual c++ 問題(Question): 想要問一個函數的作用 因為不所以我就直接打出來了 這個函數是這樣的 void myster1(char *s1, const char *s2) { while (*s1!='\0') s1++; for(;*s1=*s2;s1++,s2++) ;//empty statement }//end of function 我自己的想法是這樣的 就是傳入兩個char指標 其中一個有specify指向constant data 然後第一個while run過第一個字串陣列 直到最後一個字元就停下來 這時候做for statement 將每個s2 string 裡面的字元指定給s1接下來的字元 所以這樣應該是把兩個字串串接起來吧? 可是我有幾個問題 1. 為什麼mystery1 function的第二個parameter要宣告成指向constant data 2. 第二個for會怎樣跳出? 因為每個都這樣指定的話要怎麼跳出for? 3. 我實際使用這個程式碼 發現有時候他會把兩個字串串接起來 有時不會 要是第二個字串中間有空白鍵,他就只會串接到空白鍵之前 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.25.106
angleevil:題目 11/15 09:38
xatier:你沒有一種叫作文章標題的東西嗎? 11/15 09:39
不好意思剛剛打太快了沒打到題目
Yshuan:1.權限越小越好 2.'\0'等於0 3.字串讀入的函數問題 11/15 09:39
我想問一下 所以這個for是跑到s2的尾端就會跳出嗎? 為什麼?? 我讀字串是使用cin. char s1[80],s2[80] cin>>s1>>s2;
CJHhelper:有危險的strcat 11/15 09:41
※ 編輯: steve1012 來自: 140.112.25.106 (11/15 09:41) ※ 編輯: steve1012 來自: 140.112.25.106 (11/15 09:43)
angleevil:*s1=*s2 -->改成 (*s1=*s2) != '\0'.還有第一個while 11/15 09:42
Yshuan:樓上應該才是重點... 我第一感覺也是很恐怖... 11/15 09:42
我覺得好像有點問題可是實際上是可以跑得 這是c++how to program裡面的題目 ※ 編輯: steve1012 來自: 140.112.25.106 (11/15 09:44)
angleevil:不是已經把s1移到最後一個位置嘛?,你這樣for會超出邊界 11/15 09:44
不過題目宣告的陣列比輸入的字串長很多 這樣應該還可以吧 char s1[80],s2[80];
Yshuan:我指CJH大大~ 指標指阿指的就不知道指去哪了... 11/15 09:44
※ 編輯: steve1012 來自: 140.112.25.106 (11/15 09:50)
angleevil:char s1[80],s2[80];<--這樣是不行的.要s1[161].s2[80] 11/15 09:54
angleevil:我已經給你答案了. 11/15 09:56
tropical72:!! 我看沒問題耶!! Orz. char s1[80],s2[80]; 第一段 11/15 11:39
tropical72:while是在找 s1 結束點,第二段的 *s1=*s2 就等於 11/15 11:39
tropical72:(*s1=*s2)!='\0' 沒錯,至於 ov 的話,這在 strcat 也會. 11/15 11:40
angleevil:請愛用(*s1=*s2) != '\0'. 而且我沒用strcat思想進去 11/15 11:51
angleevil:有點算是用此答案回答2的問題. 11/15 11:52
tropical72:第三個問題,純粹是因為 cin 是以 white space 為分隔 11/15 11:53
tropical72:所以你輸入空白或 tab, 就會斷掉。而第二個問題引數用 11/15 11:54
tropical72:const,是因為s2從頭到尾都不會改變內容,所以加上const 11/15 11:54
tropical72:保證這件事(不會藉由char* s2改變記憶體內容). 11/15 11:55
angleevil:tropical72...第二個問題->第一個問題.你最近累了 11/15 11:58
tropical72:Orz..我該配眼鏡了..最近說話老是語次無倫.. 11/15 12:01
autumned: ^^^^^^ 11/15 13:12
LPH66:XDDDDDDDDDDD 11/15 13:24
angleevil:...t大的情況真的太嚴重了 11/15 13:29
xatier:XDDDDDDDDDD 11/15 14:10
hilorrk:t大為本版精英 請好好保重龍體啊QQ 11/15 14:14
steve1012:謝謝謝謝 11/15 15:17
EdisonX:Orz.. 才剛說完馬上又犯了 11/15 17:05