防止错误输入

发布于 2024-10-14 05:51:35 字数 220 浏览 3 评论 0原文

我使用数字( int、float、double、long、unsigned ),但是当我将其他字符放入控制台时(例如 ^[[A* )。因此,我的程序崩溃了,

如何保护我的程序免受这种错误输入的影响?

注意:我知道一些库函数,即 isdigitisallnum,但它们没有太大帮助

I worked with numbers ( int, float, double, long, unsigned ), but when I put other character to console ( such as ^[[A, or * ). Therefore, my program is crashing

How can I protect my program from this erroneous input ?

Note : I know some library function namely isdigit or isallnum, but they don't help so much

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

暗喜 2024-10-21 05:51:35

在 C 和 C++ 中执行此操作的方法是将所有输入读取为字符串,然后解析该字符串。

这就是为什么除了调试/学生/业余爱好者程序之外,您不应该将 scanf("%d") 或 cin>>integer 用于任何其他目的的原因之一。

The way to do this in C as well as C++, is to read all inputs as strings, then parse the string.

This is one reason why you should never use scanf("%d") or cin>>integer for any other purposes than debugging / student / hobbyist programs.

旧话新听 2024-10-21 05:51:35

在 C++ 中,可以通过字符串流过滤数据来做到这一点。 在斯坦福大学的 C++ 入门课程网站上讨论了如何做到这一点,第 19 页上有读取整数的完整代码。本章的其余部分对于如何在 C++ 中执行 I/O 也是一个很好的资源,这也可能很有用。

In C++ it's possible to do this by filtering the data through a stringstream. There's a discussion of how to do this at Stanford's introductory C++ course site, with full code for reading integers on page 19. The rest of the chapter is also a good resource in general for how to do I/O in C++, which might also be useful.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文