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