Re: [問題] 用memcpy 會有殘餘值怎麼辦?

作者: qsort (Cos)   2016-02-04 16:44:44
原文吃光光
先說我認為的答案:
snprintf(buff, buff_size, "%.*s", token_len, token);
//配合原文: snprintf(Ptr->ListString,ListString_size,"%B.*s",Length,CharPtr);
ref: http://stackoverflow.com/a/5932385
如果有字串相接的需求
不要用strcat,因為不安全,容易Buffer overflow
我個人是推薦:
int l=0;
l+=snprintf(buff+l,buff_size-l, "%s", str1); //strcat(buff, str1);
l+=snprintf(buff+l,buff_size-l, "%s", str2); //strcat(buff, str2);
好處是buff不用清空,只要把l設成0即可
同時snprintf(...)保證最後結尾一定是'\0'
以上
作者: apologize (人生在世很愜意)   2016-02-05 14:49:00
我查http://0rz.tw/eIwzWstdio.h 沒有阿,請問這函式是放哪邊?
作者: qsort (Cos)   2016-02-05 16:50:00
打個manual snprintf都蠻一堆如果你的c lib沒有,一定是太舊了,請換一套
作者: EdisonX (卡卡獸)   2016-02-06 21:41:00
我有點看不懂 %.*s 和 %*s 有什麼不同?乍看是相同的?
作者: LPH66 (-6.2598534e+18f)   2016-02-06 23:53:00
%5s 是最短印 5 個字 (不夠會補), %.5s 是最多印 5 個字
作者: EdisonX (卡卡獸)   2016-02-07 10:17:00
原來如此 謝謝LPH66。那有沒有固定5個字,超過的話,{顯示二個字,再加上刪節符號...}?還是只能寫function?
作者: uranusjr (←這人是超級笨蛋)   2016-02-07 15:39:00
這種只能寫 function, 別說 C 了高階語言都不見得有
作者: EdisonX (卡卡獸)   2016-02-07 20:16:00
也是 我在天真什麼 XD

Links booklink

Contact Us: admin [ a t ] ucptt.com