[問題] 問一個函數的作用

看板C_and_CPP作者 (steve)時間12年前 (2011/11/15 09:34), 編輯推噓4(4024)
留言28則, 10人參與, 最新討論串1/1
開發平台(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

11/15 09:38, , 1F
題目
11/15 09:38, 1F

11/15 09:39, , 2F
你沒有一種叫作文章標題的東西嗎?
11/15 09:39, 2F
不好意思剛剛打太快了沒打到題目

11/15 09:39, , 3F
1.權限越小越好 2.'\0'等於0 3.字串讀入的函數問題
11/15 09:39, 3F
我想問一下 所以這個for是跑到s2的尾端就會跳出嗎? 為什麼?? 我讀字串是使用cin. char s1[80],s2[80] cin>>s1>>s2;

11/15 09:41, , 4F
有危險的strcat
11/15 09:41, 4F
※ 編輯: steve1012 來自: 140.112.25.106 (11/15 09:41) ※ 編輯: steve1012 來自: 140.112.25.106 (11/15 09:43)

11/15 09:42, , 5F
*s1=*s2 -->改成 (*s1=*s2) != '\0'.還有第一個while
11/15 09:42, 5F

11/15 09:42, , 6F
樓上應該才是重點... 我第一感覺也是很恐怖...
11/15 09:42, 6F
我覺得好像有點問題可是實際上是可以跑得 這是c++how to program裡面的題目 ※ 編輯: steve1012 來自: 140.112.25.106 (11/15 09:44)

11/15 09:44, , 7F
不是已經把s1移到最後一個位置嘛?,你這樣for會超出邊界
11/15 09:44, 7F
不過題目宣告的陣列比輸入的字串長很多 這樣應該還可以吧 char s1[80],s2[80];

11/15 09:44, , 8F
我指CJH大大~ 指標指阿指的就不知道指去哪了...
11/15 09:44, 8F
※ 編輯: steve1012 來自: 140.112.25.106 (11/15 09:50)

11/15 09:54, , 9F
char s1[80],s2[80];<--這樣是不行的.要s1[161].s2[80]
11/15 09:54, 9F

11/15 09:56, , 10F
我已經給你答案了.
11/15 09:56, 10F

11/15 11:39, , 11F
!! 我看沒問題耶!! Orz. char s1[80],s2[80]; 第一段
11/15 11:39, 11F

11/15 11:39, , 12F
while是在找 s1 結束點,第二段的 *s1=*s2 就等於
11/15 11:39, 12F

11/15 11:40, , 13F
(*s1=*s2)!='\0' 沒錯,至於 ov 的話,這在 strcat 也會.
11/15 11:40, 13F

11/15 11:51, , 14F
請愛用(*s1=*s2) != '\0'. 而且我沒用strcat思想進去
11/15 11:51, 14F

11/15 11:52, , 15F
有點算是用此答案回答2的問題.
11/15 11:52, 15F

11/15 11:53, , 16F
第三個問題,純粹是因為 cin 是以 white space 為分隔
11/15 11:53, 16F

11/15 11:54, , 17F
所以你輸入空白或 tab, 就會斷掉。而第二個問題引數用
11/15 11:54, 17F

11/15 11:54, , 18F
const,是因為s2從頭到尾都不會改變內容,所以加上const
11/15 11:54, 18F

11/15 11:55, , 19F
保證這件事(不會藉由char* s2改變記憶體內容).
11/15 11:55, 19F

11/15 11:58, , 20F
tropical72...第二個問題->第一個問題.你最近累了
11/15 11:58, 20F

11/15 12:01, , 21F
Orz..我該配眼鏡了..最近說話老是語次無倫..
11/15 12:01, 21F

11/15 13:12, , 22F
^^^^^^
11/15 13:12, 22F

11/15 13:24, , 23F
XDDDDDDDDDDD
11/15 13:24, 23F

11/15 13:29, , 24F
...t大的情況真的太嚴重了
11/15 13:29, 24F

11/15 14:10, , 25F
XDDDDDDDDDD
11/15 14:10, 25F

11/15 14:14, , 26F
t大為本版精英 請好好保重龍體啊QQ
11/15 14:14, 26F

11/15 15:17, , 27F
謝謝謝謝
11/15 15:17, 27F

11/15 17:05, , 28F
Orz.. 才剛說完馬上又犯了
11/15 17:05, 28F
文章代碼(AID): #1EmS6qcK (C_and_CPP)