gpt4 book ai didi

c++ - 如何使用 scanf 验证输入

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:55:58 25 4
gpt4 key购买 nike

如何使用 scanf 验证用户输入。现在我有这样的东西,但不起作用。

注意:我有 atoi 只是为了验证 scanf 验证是否有效。

scanf("%[0987654321.-]s",buf);

i = atoi(buf);

if(i)
index = i;

最佳答案

使用 scanf() 通常不是用户输入的好主意,因为失败会将 FILE 指针留在未知位置。那是因为 scanf 代表“扫描格式化”,并且未格式化比用户输入多一点。

我建议使用 fgets() 获取一行,然后在字符串上使用 sscanf() 来实际检查和处理它。

这还允许您检查字符串中是否包含您想要的字符(通过循环或使用正则表达式),而 scanf 函数系列并不真正适用于此。

例如,将 scanf()"%d""%f" 一起使用将在第一个非-number 字符,因此不会捕获像 "127hello" 这样的尾随错误,它只会给你 127。将它与无界 %s 一起使用只是 乞求缓冲区溢出。

如果你真的必须使用 [] 格式说明符(在 scanf sscanf 中),我不不要认为它后面是 s

并且,对于使用该建议的稳健输入解决方案,请参阅 here .一旦您将输入行作为字符串,您就可以sscanf 到您满意的位置。

关于c++ - 如何使用 scanf 验证输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/456303/

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