gpt4 book ai didi

c - GNU strerror_r 缓冲区含义

转载 作者:行者123 更新时间:2023-12-03 09:12:11 25 4
gpt4 key购买 nike

char *strerror_r(int errnum, char *buf, size_t buflen);

这些 buf/buflen 参数有什么用?

空缓冲区就像一个魅力:

char* buf = nullptr;
fprintf(stderr, strerror_r(errno, buf, 0));

这个缓冲区看起来也没有使用:

char buf[1024];
fprintf(stderr, "%s\n", strerror_r(errno, buf, sizeof buf)); // Correct message here
fprintf(stderr, "%s\n", buf); // Empty

最佳答案

引自man page强调我的

The GNU-specific strerror_r() returns a pointer to a string containing the error message. This may be either a pointer to a string that the function stores in buf, or a pointer to some (immutable) static string (in which case buf is unused).

因此,buf 很可能未被使用,并且如果 buf 未被使用,则 buflen 并不重要。

[....] If the function stores a string in buf, then at most buflen bytes are stored (the string may be truncated if buflen is too small and errnum is unknown). [...]

关于c - GNU strerror_r 缓冲区含义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41391226/

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