1万
7万
11万
管理员
使用道具 举报
0
290
高级会员
regbbs 发表于 2021-11-23 09:08 这些函数都有替代的,比如sprintf可以用snprintf,需要传入buf的长度,超过了就截断
1
382
385
挖东衣宇 发表于 2021-11-23 14:18 好像每年都中过一次招
356
2180
3253
版主
eric2013 发表于 2021-11-23 14:24 C库里面这种函数很多,不小心就中招了,最近在找一个靠谱的方法解决下。
caicaptain2 发表于 2021-11-23 14:56 先用sizeof来确定字符串的长度,再用malloc来分配对应的内存给buf指针,再使用这个这个指针即可。 siz ...
eric2013 发表于 2021-11-23 14:57 谢谢,这种方法考虑过,不够安全。
caicaptain2 发表于 2021-11-23 15:06 http://c.biancheng.net/c/memory/ 这里有个文章解释了安全使用内存分配的一些要求。
67
初级会员
zhousun 发表于 2021-11-23 16:31 如果是字符串再后面人为再加个0,结束字符串。
44
242
374
25
300
380
snakeemail 发表于 2021-11-23 18:26 snprintf
爱恋之燕 发表于 2021-11-23 20:06 这个问题似乎无法解决,C语言天生就这样
snakeemail 发表于 2021-11-25 19:52 asprintf函数试下。不过此函数还是分配一个大函数。 linux这种操作系统,在它的底层,准备了好多内存块, ...
5
新手上路
hhxb 发表于 2021-11-26 10:20 C语言天生自带的问题,很难处理。 定义一个安全字符串 buf,前2个byte写入长度,从第三个byte开始是内容 ...
126
eric2013 发表于 2021-11-27 08:52 还别说,这个还真是个好办法
ilcvm 发表于 2021-11-27 09:34 请问您认为snprintf这种传入buffer大小参数的方式不方便的具体指哪方面?按我理解18楼的方案只是把大小参 ...
eric2013 发表于 2021-11-27 09:40 因为传递进来的字符大小是不定长的。如果显示的内容超过了buf大小,需要截取一段展示。 本质跟snprintf ...
10
112
142
本版积分规则 发表回复 回帖后跳转到最后一页
|小黑屋|Archiver|手机版|硬汉嵌入式论坛
GMT+8, 2025-8-15 13:25 , Processed in 0.049442 second(s), 24 queries .
Powered by Discuz! X3.4 Licensed
Copyright © 2001-2023, Tencent Cloud.