gpt4 book ai didi

c - 优雅地处理来自 gets_s() 的错误?

转载 作者:太空宇宙 更新时间:2023-11-04 06:07:43 25 4
gpt4 key购买 nike

我的代码使用 gets_s()获取用户输入的字符串。如果用户输入的字符串长度大于 gets_s 中指定的长度,应用程序将中止。那么如何优雅地处理呢?

谢谢。

最佳答案

1) gets_s 不是标准函数:显然它是由 Microsoft 编译器作为额外提供的

2) 使用fgets,如果需要删除尾随的'\n',如果没有尾随的'\n'处理超长输入

例子

size_t len;
char buf[1000];
if (fgets(buf, sizeof buf, stdin)) {
buflen = strlen(buf);
if (len) {
if (buf[len - 1] == '\n') {
buf[--len] = '\0'; /* adjust len and remove trailing newline */
} else {
/* something bad hapenned */
if (len == sizeof buf - 1) {
/* possibly large input */
} else {
/* small input */
}
}
} else {
/* no characters read at all, this is a strange occurrance */
}
} else {
/* fgets returned NULL: EOF on stdin? or maybe some error? */
}

关于c - 优雅地处理来自 gets_s() 的错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6455112/

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