[問題] 請問一下,有關於字串存取

作者: apologize (人生在世很愜意)   2015-06-19 22:06:22
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
C
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
string.h
問題(Question):
char *s1, *s2, *s3;
s1 = "Abian is son of the bitch.";
s2 = "Fuck you Abian.";
s3 = strcat (s1, s2);
printf(" %s \n %s \n %s\n", s1
, s2
, s3
);
預期的正確結果(Expected Output):
就是可以印出想要的:Abian is son of the bitch.Fuck you Abian.
錯誤結果(Wrong Output):
程式無法執行。
補充說明(Supplement):
我字串處理比較薄弱,我想用指標指向字串,可是compiler之後就執行不成功。
是怎樣的問題,我用陣列是沒問題的說。
作者: uranusjr (←這人是超級笨蛋)   2015-06-19 22:07:00
置底十誡之四
作者: apologize (人生在世很愜意)   2015-06-19 22:10:00
謝謝,字串不能用指標去更改,只能用陣列
作者: Sirctal (母豬母豬 夜裡哭哭)   2015-06-19 22:28:00
天阿 這樣很危險阿... 字串不能這樣搞
作者: MOONRAKER (㊣牛鶴鰻毛人)   2015-06-20 11:42:00
google一下 很容易可以看到strcat()的範例程式
作者: johnhmj (耗呆肥羊)   2015-06-20 11:44:00
接字,你要給他緩衝空間來接
作者: yvb   2015-06-20 16:45:00
原程式非緩衝空間問題,而是字串常數所在處,可能是唯讀不可寫.
作者: johnhmj (耗呆肥羊)   2015-06-20 17:12:00
樓上抓我語病,就是要用字元陣列嘛,難道要我親自回文喔?
作者: yvb   2015-06-20 17:25:00
樓上請試試看宣告個 global variable ...const char s[100] = "Abian is son of the bitch.";然後 s1 = s; 後, 做 strcat(s1, s2) 看會如何?那個字串大概只有20來個字元長度, s[100]算不算有緩衝空間?而 const char s[100] 是不是字元陣列?
作者: EdisonX (卡卡獸)   2015-06-20 17:31:00
strcat(char * , const char *) compiler warning ?
作者: johnhmj (耗呆肥羊)   2015-06-20 17:31:00
我不想牽拖到4樓,但他都說了strcat用法,你還要我再說偛我不想牽拖到4樓,但他都說了strcat用法,你還要我再說啥
作者: yvb   2015-06-20 17:51:00
範例通常只教你怎麼做, 不會教你不能怎麼做...有 compile warning 不一定會 runtime error,而且 s1="..."; s2="..."; strcat(s1,s2);可能不會 warning.會出warning應該是s1=s; 若s設為local variable,應該不會RE.
作者: johnhmj (耗呆肥羊)   2015-06-20 18:12:00
假如你認為可以正確解答就直接回文,給原PO看不是給我看
作者: yvb   2015-06-20 22:17:00
一樓指出誡四,內容就是說"唯讀",二樓原PO回復其實就結案了...三樓以下,其實都算在哈拉了吧? XD
作者: MOONRAKER (㊣牛鶴鰻毛人)   2015-06-21 00:33:00
YOU ARE SAYING WHAT
作者: yvb   2015-06-21 01:12:00
UPSTAIRS, YOU ASK WHO
作者: johnhmj (耗呆肥羊)   2015-06-21 06:28:00
你這唯讀說法好幾年就有人解釋過了,所以你想說什麼?
作者: yvb   2015-06-21 14:06:00
若您同意唯讀說法,又提出緩衝空間的說法,那更不知你想做什麼?
作者: Killercat (殺人貓™)   2015-06-21 16:05:00
不要偷渡得那麼故意 = = 另外,這篇說真的最糟的地方
作者: TobyH4cker (Toby (我要當好人))   2015-06-21 16:06:00
YOU GOOD MOTHER
作者: Killercat (殺人貓™)   2015-06-21 16:06:00
在於你錯誤訊息沒有印出來,這才是最關鍵的地方
作者: johnhmj (耗呆肥羊)   2015-06-21 16:41:00
yvb 你不尊重我的回答,我為何要尊重你的回應?
作者: yvb   2015-06-21 17:07:00
john 我只就事論事,認為緩衝空間說法混淆正解,無關尊不尊重.
作者: bigpigbigpig (To littlepig with love)   2015-06-21 17:07:00
C 字串程式一定先開char陣列儲存字串,否則極不安全
作者: yvb   2015-06-21 17:09:00
另外, 沒注意字串內容. K大 一說才知道, Abian無故中槍 XD
作者: Killercat (殺人貓™)   2015-06-21 17:43:00
拍寫,我沒看推文就推了 讓大家誤會了(bow
作者: yvb   2015-06-21 17:56:00
作者: johnhmj (耗呆肥羊)   2015-06-21 19:08:00
yvb 你連基本尊重他人推文都做不到憑什麼談正解或專業。
作者: yvb   2015-06-21 21:05:00
john 不知你誤解了什麼, 而有我不尊重你推文之說?是對推文有疑問, 也不能提出個人見解, 才是尊重推文?還是要加一堆敬語, 或稱呼大大之類的, 才是尊重推文?若是我誤用輕蔑的語句回應你的推文,也煩請指正是哪句.
作者: johnhmj (耗呆肥羊)   2015-06-21 22:15:00
我在7樓寫得很清楚,難道你沒有看到?假如你當時一次否定掉1到5樓的推文意見那麼我無話可說。
作者: loveme00835 (髮箍)   2015-06-21 22:39:00
我不知道 yvb 在幹嘛.. 推文本來就是可以討論的地方也不是你覺得是沒回答到問題的地方就不能討論以我的觀點 4F 說的也是一個解法
作者: yvb   2015-06-21 23:31:00
版大您誤會了. 我並未否定後續的討論,也未說不能討論.我就是試圖討論說清楚(即使樓早歪很多了:P),而非拒絕溝通...另外,原PO補充說明已知如何沒問題,故4F所提我覺得不是徵結點.至於john, 您在7F所述,認為是挑語病,我後續就是在說明這件事,既非緩衝空間,也非是否為字元陣列的問題,而是 "是否唯讀".不知您是否看了我前面 "總結一下" 的三個 URLs ?看了也許就知,我前20樓的推文在說什麼,為何不認為是挑語病了.
作者: johnhmj (耗呆肥羊)   2015-06-22 02:01:00
給 yvb 每個人都跟你一樣回答了自認為合適的答案,當你一旦主觀否定某一位人士的推文,就會造成當事人觀感不佳…也就是心裡不爽。在此祝 yvb大師 有個美好夜晚。在此,祝 loveme版主大師 與 其他大大 有個美好夜晚。
作者: yvb   2015-06-22 18:35:00
版大是大師無誤. 但我離大師還很遠, 擔當不起, 別折騰我了 :P至於您說的推文問題, 我不知其它人會怎麼回應這樣的情況:就以本文來說, 已有人提出置底第四誡, 若你也同意此見解...但之後, 又有人說 "置底第二誡", 甚至說 "置底第三誡",那麼後來的這兩個說法, 都合理嗎? 或該不該做什麼辨正呢?
作者: soso7885 (YOHO)   2015-06-24 09:43:00
題外話,編譯記得開-Wall

Links booklink

Contact Us: admin [ a t ] ucptt.com