[問題] 把C-style字串傳進function的問題
以往一直習慣用C++ string
最近想試試看用C-style字串,遇到幾個小問題
小弟的問題用紫色的字標起來了,麻煩高手解惑呀!感恩!
(是在linux工作站上compile的)
程式碼如下:
#include <iostream>
using namespace std;
char *func(char *);
int main(){
char a1[10]="";//如果這裡只打char a1[10];的話,cout出來的東西會壞掉,why?
char *pS1=func(a1);
cout<<"1. "<<strlen(pS1)<<" "<<pS1<<endl;
char *a2="";//這樣的宣告方式,不管有沒有加上="",
//傳進去後在strcat那裡都會segmentation fault,why?
char *pS2=func(a2);
cout<<"2. "<<strlen(pS2)<<" "<<pS2<<endl;
return 0;
}
char *func(char *cstr){
cout<<"before:"<<strlen(cstr)<<" "<<cstr<<endl;
strcat(cstr, "abc");
cout<<"after :"<<strlen(cstr)<<" "<<cstr<<endl;
return cstr;
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 180.177.12.118
※ 編輯: Zoxge 來自: 180.177.12.118 (01/09 07:02)
※ 編輯: Zoxge 來自: 180.177.12.118 (01/09 07:03)
→
01/09 07:16, , 1F
01/09 07:16, 1F
→
01/09 07:17, , 2F
01/09 07:17, 2F
→
01/09 07:18, , 3F
01/09 07:18, 3F
→
01/09 07:18, , 4F
01/09 07:18, 4F
→
01/09 10:03, , 5F
01/09 10:03, 5F
→
01/09 20:41, , 6F
01/09 20:41, 6F
→
01/09 21:03, , 7F
01/09 21:03, 7F
→
01/09 21:14, , 8F
01/09 21:14, 8F
推
01/09 22:59, , 9F
01/09 22:59, 9F
→
01/10 00:14, , 10F
01/10 00:14, 10F
→
01/10 00:15, , 11F
01/10 00:15, 11F
→
01/10 00:17, , 12F
01/10 00:17, 12F
→
01/10 00:32, , 13F
01/10 00:32, 13F
→
01/10 00:49, , 14F
01/10 00:49, 14F
→
01/10 00:50, , 15F
01/10 00:50, 15F
→
01/10 00:51, , 16F
01/10 00:51, 16F
→
01/10 00:51, , 17F
01/10 00:51, 17F
→
01/10 00:52, , 18F
01/10 00:52, 18F
→
01/10 00:55, , 19F
01/10 00:55, 19F
推
01/10 10:38, , 20F
01/10 10:38, 20F
→
01/10 10:39, , 21F
01/10 10:39, 21F
→
01/10 10:40, , 22F
01/10 10:40, 22F
推
01/10 10:45, , 23F
01/10 10:45, 23F
推
01/10 12:48, , 24F
01/10 12:48, 24F
→
01/10 14:56, , 25F
01/10 14:56, 25F
→
01/10 18:54, , 26F
01/10 18:54, 26F
→
01/10 18:55, , 27F
01/10 18:55, 27F
→
01/10 18:55, , 28F
01/10 18:55, 28F
推
01/10 22:16, , 29F
01/10 22:16, 29F