程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如果 fgets 大于指定值而不程序自动关闭我,如何添加错误消息以重试大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决如果 fgets 大于指定值而不程序自动关闭我,如何添加错误消息以重试?

开发过程中遇到如果 fgets 大于指定值而不程序自动关闭我,如何添加错误消息以重试的问题如何解决?下面主要结合日常开发的经验,给出你关于如果 fgets 大于指定值而不程序自动关闭我,如何添加错误消息以重试的解决方法建议,希望对你解决如果 fgets 大于指定值而不程序自动关闭我,如何添加错误消息以重试有所启发或帮助;

我正在尝试制作一个程序,该程序可以在字符数组中获取用户输入的用户名,并且能够调用数组中的任何字母,但是如果我输入的字符超过 20 个或根本没有输入,我该如何添加错误像“再试一次”这样的消息,当我输入太多时程序不会自动关闭,或者如果我根本没有输入就停止按回车键?

int main(voID)
{
    char name[20];
        
    
    printf(": ");
    fgets (name,20,stdin);

    printf("%c",name[2]);

}

解决方法

程序自动关闭,因为您到达了 @H_978_5@main 例程的末尾。

当您没有提供足够的缓冲区来容纳完整字符串时,fgets 的行为是尽可能多地填充它(这是完整的缓冲区大小,少一个字符来放置最终的字符串终止符),把最后一个 '\0' 放在字符串的结尾,然后返回你所拥有的。该行的其余部分将在下一个 fgets 中返回(同样,如果它完全填满,或者您需要再次读取来处理它)

如果您检查过 fgets 的返回值,您会发现它返回的是一个普通字符串,并且返回值为 != NULL

检测你得到的字符多于请求的方法是搜索返回字符串的最后一个字符为 '\n' 字符。如果是,则读取在行终止符处结束。如果不是,则缓冲区已满,并且已完全填满(但请注意,缓冲区的最后一个字符将是 '\0',我指的是从前到后的字符)

如果您只按 <ENTER>,您将获得一个字符(不是没有),即 '\n' 本身。从 NULL 获取 fgets 返回值的唯一方法是根本没有更多输入(和文件结束条件),可以通过在终端按 Ctrl-D 发出该输入行首。

大佬总结

以上是大佬教程为你收集整理的如果 fgets 大于指定值而不程序自动关闭我,如何添加错误消息以重试全部内容,希望文章能够帮你解决如果 fgets 大于指定值而不程序自动关闭我,如何添加错误消息以重试所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:fgets如果