首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >优雅地处理来自gets_s()的错误?

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

Stack Overflow用户
提问于 2011-06-23 21:50:07
回答 2查看 307关注 0票数 0

我的代码使用gets_s()从user.If获取字符串输入,如果用户输入的字符串长度大于gets_s中指定的长度,应用程序aborts.So如何正确处理?

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-06-23 21:56:32

您可以在程序开始时调用_set_invalid_parameter_handler来设置一个回调函数来处理错误,在回调函数中,您应该检查errno值。

票数 2
EN

Stack Overflow用户

发布于 2011-06-23 21:58:33

1) gets_s不是一个标准函数:显然,它是微软编译器提供的一个额外函数

2)使用fgets,如果需要并且没有包含超长输入的尾随'\n'交易,请删除尾随'\n'

示例

代码语言:javascript
运行
复制
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? */
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6455112

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档