gpt4 book ai didi

c - strncat 上的段错误

转载 作者:行者123 更新时间:2023-11-30 14:20:51 26 4
gpt4 key购买 nike

我有以下代码:

struct prefix rnp;
char prefix[IPV6_PREFIX_STR_MAX_LEN];

...

strncat(prefix, "/", 1); <----- WORKS OK
strncat(prefix, rnp.prefixlen, MAX_PREFIX_LEN); <------ SEG FAULT

...

其中 rnp.prefixlen 的类型为 u_int8_t

IPV6_PREFIX_STR_MAX_LEN = 45

MAX_PREFIX_LEN = 2

prefix的内容是192.13.6.0,rnp.prefixlen的内容是16

我真的不知道如何克服它。

有什么想法吗?

最佳答案

如果rnp.prefixlen整数(如类型u_int8_t所示),那么您不能strncat it(整数将被转换为指针,然后取消引用,这将导致未定义的行为)。

如果您的目标是将一些格式化文本写入字符串,请改用 sprintfsnprintf:

sprintf(prefix, "/%d", rnp.prefixlen);

sprintfsnprintf 返回写入的字符数,因此您可以轻松跟踪字符串的结尾,而不必屈服于 Schlemiel the Painter's algorithm .

关于c - strncat 上的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15084006/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com