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

看板C_and_CPP作者 (人生在世很愜意)時間9年前 (2015/06/19 22:06), 8年前編輯推噓10(10054)
留言64則, 12人參與, 最新討論串1/1
開發平台(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之後就執行不成功。 是怎樣的問題,我用陣列是沒問題的說。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 5.23.4.124 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1434722784.A.52B.html

06/19 22:07, , 1F
置底十誡之四
06/19 22:07, 1F

06/19 22:10, , 2F
謝謝,字串不能用指標去更改,只能用陣列
06/19 22:10, 2F

06/19 22:28, , 3F
天阿 這樣很危險阿... 字串不能這樣搞
06/19 22:28, 3F

06/20 11:42, , 4F
google一下 很容易可以看到strcat()的範例程式
06/20 11:42, 4F

06/20 11:44, , 5F
接字,你要給他緩衝空間來接
06/20 11:44, 5F

06/20 16:45, , 6F
原程式非緩衝空間問題,而是字串常數所在處,可能是唯讀不可寫.
06/20 16:45, 6F

06/20 17:12, , 7F
樓上抓我語病,就是要用字元陣列嘛,難道要我親自回文喔
06/20 17:12, 7F

06/20 17:13, , 8F
06/20 17:13, 8F

06/20 17:25, , 9F
樓上請試試看宣告個 global variable ...
06/20 17:25, 9F

06/20 17:25, , 10F
const char s[100] = "Abian is son of the bitch.";
06/20 17:25, 10F

06/20 17:26, , 11F
然後 s1 = s; 後, 做 strcat(s1, s2) 看會如何?
06/20 17:26, 11F

06/20 17:28, , 12F
那個字串大概只有20來個字元長度, s[100]算不算有緩衝空間?
06/20 17:28, 12F

06/20 17:29, , 13F
而 const char s[100] 是不是字元陣列?
06/20 17:29, 13F

06/20 17:31, , 14F
strcat(char * , const char *) compiler warning ?
06/20 17:31, 14F

06/20 17:31, , 15F
我不想牽拖到4樓,但他都說了strcat用法,你還要我再說偛
06/20 17:31, 15F

06/20 17:31, , 16F
我不想牽拖到4樓,但他都說了strcat用法,你還要我再說啥
06/20 17:31, 16F

06/20 17:51, , 17F
範例通常只教你怎麼做, 不會教你不能怎麼做...
06/20 17:51, 17F

06/20 17:52, , 18F
有 compile warning 不一定會 runtime error,
06/20 17:52, 18F

06/20 17:53, , 19F
而且 s1="..."; s2="..."; strcat(s1,s2);可能不會 warning.
06/20 17:53, 19F

06/20 17:54, , 20F
會出warning應該是s1=s; 若s設為local variable,應該不會RE.
06/20 17:54, 20F

06/20 18:12, , 21F
假如你認為可以正確解答就直接回文,給原PO看不是給我看
06/20 18:12, 21F

06/20 22:17, , 22F
一樓指出誡四,內容就是說"唯讀",二樓原PO回復其實就結案了...
06/20 22:17, 22F

06/20 22:18, , 23F
三樓以下,其實都算在哈拉了吧? XD
06/20 22:18, 23F

06/21 00:33, , 24F
YOU ARE SAYING WHAT
06/21 00:33, 24F

06/21 01:12, , 25F
UPSTAIRS, YOU ASK WHO
06/21 01:12, 25F

06/21 06:28, , 26F
你這唯讀說法好幾年就有人解釋過了,所以你想說什麼?
06/21 06:28, 26F

06/21 14:06, , 27F
若您同意唯讀說法,又提出緩衝空間的說法,那更不知你想做什麼?
06/21 14:06, 27F

06/21 16:05, , 28F
不要偷渡得那麼故意 = = 另外,這篇說真的最糟的地方
06/21 16:05, 28F

06/21 16:06, , 29F
YOU GOOD MOTHER
06/21 16:06, 29F

06/21 16:06, , 30F
在於你錯誤訊息沒有印出來,這才是最關鍵的地方
06/21 16:06, 30F

06/21 16:41, , 31F
yvb 你不尊重我的回答,我為何要尊重你的回應?
06/21 16:41, 31F

06/21 17:07, , 32F
john 我只就事論事,認為緩衝空間說法混淆正解,無關尊不尊重.
06/21 17:07, 32F

06/21 17:07, , 33F
C 字串程式一定先開char陣列儲存字串,否則極不安全
06/21 17:07, 33F

06/21 17:09, , 34F
另外, 沒注意字串內容. K大 一說才知道, Abian無故中槍 XD
06/21 17:09, 34F

06/21 17:43, , 35F
拍寫,我沒看推文就推了 讓大家誤會了(bow
06/21 17:43, 35F

06/21 17:56, , 36F
總結一下我在前20樓所提: http://ideone.com/Qarfhm (OK)
06/21 17:56, 36F

06/21 17:58, , 37F

06/21 19:08, , 38F
yvb 你連基本尊重他人推文都做不到憑什麼談正解或專業。
06/21 19:08, 38F

06/21 21:05, , 39F
john 不知你誤解了什麼, 而有我不尊重你推文之說?
06/21 21:05, 39F

06/21 21:05, , 40F
是對推文有疑問, 也不能提出個人見解, 才是尊重推文?
06/21 21:05, 40F

06/21 21:06, , 41F
還是要加一堆敬語, 或稱呼大大之類的, 才是尊重推文?
06/21 21:06, 41F

06/21 21:07, , 42F
若是我誤用輕蔑的語句回應你的推文,也煩請指正是哪句.
06/21 21:07, 42F

06/21 22:15, , 43F
我在7樓寫得很清楚,難道你沒有看到?
06/21 22:15, 43F

06/21 22:23, , 44F
假如你當時一次否定掉1到5樓的推文意見那麼我無話可說。
06/21 22:23, 44F

06/21 22:39, , 45F
我不知道 yvb 在幹嘛.. 推文本來就是可以討論的地方
06/21 22:39, 45F

06/21 22:39, , 46F
也不是你覺得是沒回答到問題的地方就不能討論
06/21 22:39, 46F

06/21 22:43, , 47F
以我的觀點 4F 說的也是一個解法
06/21 22:43, 47F

06/21 23:31, , 48F
版大您誤會了. 我並未否定後續的討論,也未說不能討論.
06/21 23:31, 48F

06/21 23:31, , 49F
我就是試圖討論說清楚(即使樓早歪很多了:P),而非拒絕溝通...
06/21 23:31, 49F

06/21 23:32, , 50F
另外,原PO補充說明已知如何沒問題,故4F所提我覺得不是徵結點.
06/21 23:32, 50F

06/21 23:35, , 51F
至於john, 您在7F所述,認為是挑語病,我後續就是在說明這件事,
06/21 23:35, 51F

06/21 23:36, , 52F
既非緩衝空間,也非是否為字元陣列的問題,而是 "是否唯讀".
06/21 23:36, 52F

06/21 23:36, , 53F
不知您是否看了我前面 "總結一下" 的三個 URLs ?
06/21 23:36, 53F

06/21 23:38, , 54F
看了也許就知,我前20樓的推文在說什麼,為何不認為是挑語病了.
06/21 23:38, 54F

06/22 02:01, , 55F
給 yvb 每個人都跟你一樣回答了自認為合適的答案,當你一
06/22 02:01, 55F

06/22 02:01, , 56F
旦主觀否定某一位人士的推文,就會造成當事人觀感不佳…
06/22 02:01, 56F

06/22 02:01, , 57F
也就是心裡不爽。在此祝 yvb大師 有個美好夜晚。
06/22 02:01, 57F

06/22 02:04, , 58F
在此,祝 loveme版主大師 與 其他大大 有個美好夜晚。
06/22 02:04, 58F

06/22 18:35, , 59F
版大是大師無誤. 但我離大師還很遠, 擔當不起, 別折騰我了 :P
06/22 18:35, 59F

06/22 18:36, , 60F
至於您說的推文問題, 我不知其它人會怎麼回應這樣的情況:
06/22 18:36, 60F

06/22 18:36, , 61F
就以本文來說, 已有人提出置底第四誡, 若你也同意此見解...
06/22 18:36, 61F

06/22 18:37, , 62F
但之後, 又有人說 "置底第二誡", 甚至說 "置底第三誡",
06/22 18:37, 62F

06/22 18:37, , 63F
那麼後來的這兩個說法, 都合理嗎? 或該不該做什麼辨正呢?
06/22 18:37, 63F

06/24 09:43, , 64F
題外話,編譯記得開-Wall
06/24 09:43, 64F
※ 編輯: apologize (221.154.189.189), 06/17/2016 19:29:07
文章代碼(AID): #1LX27WKh (C_and_CPP)