[問題] 回傳字串的問題

看板C_and_CPP作者 (ㄚ泉)時間14年前 (2010/01/30 09:02), 編輯推噓2(205)
留言7則, 4人參與, 最新討論串1/2 (看更多)
我寫了一個程式是用來將整數轉為字串的 char *int_tran_1(int num) { char ch[8]; int i; ch[7]='\0'; for(i=6;num!=0;i--) { ch[i]=num%10+48; num/=10; } printf("%s\n",ch+i+1); return ch+i+1; } 寫完才發現回傳位址的空間已經釋放了.... 所以我將程式改為 void int_tran_2(int num,char **temp) { char ch[8]; int i; ch[7]='\0'; for(i=6;num!=0;i--) { ch[i]=num%10+48; num/=10; } printf("%s\n",ch+i+1); strcpy(*temp,ch+i+1); } 如果我要用return的方式(這樣比較方便使用) 不要在中間加一個temp 請問有什麼方法嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.173.196.105

01/30 09:09, , 1F
補充一下 不要說用spritf...我只是問問看有沒有方法
01/30 09:09, 1F

01/30 09:10, , 2F
ch的空間用動態生成的 但是這樣變成caller要負責釋放
01/30 09:10, 2F

01/30 09:11, , 3F
這個功能連常見的itoa()都是用傳入temp的方式了
01/30 09:11, 3F

01/30 09:12, , 4F
覺得這樣很麻煩的話 你以後麻煩的機會還多的是...
01/30 09:12, 4F

01/30 09:46, , 5F
global var, dynamic alloc, static var也勉強可行....
01/30 09:46, 5F

01/30 15:13, , 6F
把字串包在結構裡XD
01/30 15:13, 6F

01/30 15:14, , 7F
struct data {char[7];};
01/30 15:14, 7F
文章代碼(AID): #1BOuK84w (C_and_CPP)
文章代碼(AID): #1BOuK84w (C_and_CPP)