[问题] 请问一下,有关于字串存取

楼主: 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