使用scanf()时如何区分整数和字符

2024-06-19

我只是使用该功能scanf()。代码如下:

scanf("%d",&a);
printf("%d",a);

当我输入1时,它会像我想要的那样打印1。 但即使我输入 1a,它也会像以前一样打印 1。 当用户输入非整数时((例如)2.3,12ab,1 a) 我想向用户显示“输入整数”之类的警告。

我怎么解决这个问题?


将其全部读入一个字符串fgets().

如果您只想让他们输入的所有内容都是一个int,遍历字符串并寻找isdigit()在每个字符上,然后当你发现它只是数字时,调用strtod(),如果没有,则发出错误并重新提示。

如果您希望从同一输入行解析多个内容,那么您需要使用类似的内容来解析字符串strtok()一次获取一个单独的标记,然后查看每个标记并通过查看每个字符是否为数字来确定它是否为数字isdigit()或等于'-' '.'诸如此类。如果是这样,将其解析为数字strtol() or strtod()(等等)(取决于您所看到的内容,int 或 float/double。)否则,将标记解析为字符串或发出错误。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用scanf()时如何区分整数和字符 的相关文章

  • 使用 OpenXML 打开受保护的 Word 文档

    我到处寻找 但找不到任何答案 所有帖子和讨论都是关于创建受保护的帖子和讨论 但没有任何内容可以打开它 我在我的 c 程序中保护了 DOCX 和 DOC 文档 并希望使用 OpenXML 2 5 以编程方式打开它们 我已经使用 Office
  • Cocoa 常量名称中的“k”代表什么[重复]

    这个问题在这里已经有答案了 可能的重复 Apple 的 API 中的 k 前缀表示什么 https stackoverflow com questions 675816 what does the k prefix indicate in
  • asm、asm 易失性内存和破坏性内存之间的区别

    在实现无锁数据结构和定时代码时 通常需要抑制编译器的优化 通常人们使用asm volatile with memory在 clobber 列表中 但有时你会看到asm volatile或者只是一个简单的asm破坏记忆 这些不同的语句对代码生
  • 嵌套绑定表达式

    这是一个后续问题我之前的问题 https stackoverflow com questions 2735294 templates function pointers and c0x include
  • Motif 库的水平绘制的 RowColumn 类 (C)?

    我正在使用 Motif Library 来完成我的工作 如果有人不熟悉这个库 您可以在这里找到文件列表https packages ubuntu com xenial amd64 libmotif dev filelist https pa
  • 安装/编译 pylzma(lzma python 绑定)

    我已经向作者提出了这个问题website http www joachim bauch de projects pylzma comment page 1 comment 5211 但我想我也可以在这里问 我一直在尝试使用以下设置安装 py
  • gcc 的错误?模板类中友元函数的访问控制问题

    我有一个模板类 并在类中定义了一个友元函数 include
  • 文件已创建但无法写入

    我的计划 检查Settings txt 文件 如果该文件不存在 则创建文本并自动写入其中 如果 Settings txt 文件已存在 请忽略 不要创建或写入现有文件 我的问题 当文件不存在时 Settings txt 文件会创建 但它是空的
  • ofstream::operator<<(streambuf) 是一种复制文件的缓慢方法

    我需要一种跨平台 无需外部库的复制文件的方式 在我的第一遍中 我想出了 省略错误处理 char buffer LEN ifstream src srcFile ios in ios binary ofstream dest destFile
  • dotnet core 创建文件名中不含“CoreFxPipe_”的命名管道

    使用以下命令创建命名管道时命名管道客户端流 or 命名管道服务器流dotnet core 的类中 关联的 管道 看起来实际上是一个套接字 已自动将 CoreFxPipe 添加到文件名的前面 有没有一种非黑客的方法来防止这种行为 我只是希望文
  • 为什么未命名的命名空间不等同于带有“using命名空间”声明的常规命名空间?

    A 最近的话题 https stackoverflow com questions 3673353 anonymous namespace ambiguityon SO 触发了这个 未命名的命名空间被认为等同于 namespace uniq
  • OpenFileDialog 中的多个文件扩展名

    如何在一组中使用多个文件扩展名OpenFileDialog 我有Filter BMP bmp GIF gif JPG jpg PNG png TIFF tiff 我想创建组 以便 JPG 为 jpg 和 jpeg TIFF 为 tif 和
  • 如何根据条件退出 PostSharp 方面的 OnEntry 方法中的方法

    我希望方面根据如下条件退出方法调用 AttributeUsage AttributeTargets Method public class IgnoreIfInactiveAttribute OnMethodBoundaryAspect p
  • 设置了 OFN_ALLOWMULTISELECT 标志的 GetOpenFileName()

    我正在尝试使用 GetOpenFileName 通用对话框调用来弹出打开对话框并允许用户选择多个文件 我设置了 OFN ALLOWMULTISELECT 标志 并设置了 OFN EXPLORER 因此我得到了 新样式 文件选择框 当我设置
  • COM Interop 挂起会冻结整个 COM 系统。如何取消COM调用

    我正在使用通过 COM Interop 包装器公开的第三方 dll 然而 其中一个 COM 调用经常冻结 至少不会返回 为了至少让我的代码更加健壮 我异步包装了调用 getDeviceInfoWaiter is a ManualResetE
  • 获取上下文菜单的控制

    我有一个如下所示的上下文菜单 A 1 2 3 选择 1 2 或 3 后 我需要访问调用上下文菜单的对象 意思是如果这是 textbox1 的上下文菜单 那么我需要访问该对象 我该怎么做 忘了说了 这是一个WPF应用程序 所以我使用 Syst
  • 如何打开 Outlook 已接收和阅读电子邮件

    我们有 5 个人 使用同一封电子邮件通过 Outlook 回复客户 我想设计一个程序来打开所有已发送的电子邮件 阅读它们 打开它们 找到第一个人的签名 并在他 她的计数器中添加一个数字 以便我可以得出一些统计数据 关于如何打开 Outloo
  • 将变量传递给 SSIS 中的项目参数

    我是这个网络的新手 希望我能找到这个问题的答案 我有一个 SSIS 项目 其中包含多个使用项目参数的包 我正在尝试更新项目参数 例如 PeriodStart 2014年5月31日 我找不到动态写入项目参数的方法 我在 4 0 框架中使用 V
  • 如何在 C 中将 int 和数组保存在共享内存中?

    我正在尝试编写一个程序 让子进程在 Linux 上相互通信 这些进程都是从同一个程序创建的 因此它们共享代码 我需要它们能够访问两个整数变量以及一个整数数组 我不知道共享内存是如何工作的 我搜索过的每一个资源除了让我困惑之外什么也没做 任何
  • TPL架构问题

    我目前正在开展一个项目 我们面临并行处理项目的挑战 到目前为止没什么大不了的 现在来说说问题 我们有一个 ID 列表 我们定期 每 2 秒 为每个 ID 调用一个 StoredProcedure 需要单独检查每个项目的 2 秒 因为它们是在

随机推荐

  • Android - 主页按钮发出什么意图?

    我想知道设备的主页按钮到底执行什么操作 即 当您单击主页按钮时会发出什么意图 意图类别和操作 回到空白的主屏幕 我想知道在单击我自己的自定义按钮时实现此操作涉及什么 谢谢 PS我知道这不是标准的 但我的设备也不是 如果您想显示主屏幕 可以通
  • 保护 REST 和 JSON

    我想利用 RESTful 架构构建提供 JSON 数据的 Web 服务 但我只想要我自己的客户端应用程序可以从我的网络服务请求 基本上 我的 Web 服务包含不供公众使用的敏感数据 但我想以这种方式构建它 以便我可以构建连接到我的 Web
  • 如何使用泛型类型的 DataContractSerializer 编写自定义序列化器?

    我想编写一个自定义序列化器 用于将会话状态存储到Azure 缓存 预览版 这意味着这个自定义序列化器必须实现IDataCacheObjectSerializer 如果我错了 请告诉我 我需要编写这个自定义序列化程序的原因是我需要序列化一些包
  • 非常大的字段会对 MySQL 数据库产生负面影响吗?

    我目前正在使用 Django 构建一个网站 并希望托管用户生物样式页面 该页面可能长达几 KB 这些字段不一定需要搜索 但在查找用户名时确实需要提供 将这些数据存储在数据库中会产生负面影响吗 如果我使用带有数据库链接的静态文本文件 我的服务
  • 指示泛型返回动态类型的对象

    这个问题是我原来问题的后续问题here https stackoverflow com questions 2541184 using a type object to create a generic 假设我有以下泛型类 简化 class
  • Microsoft.Graph - 如何从具有不同用户名的共享邮箱发送?

    我目前正在将使用 SMTP 的服务代码移植到 Office 365 通过 SMTP 我可以使用 发件人 字段在来自共享收件箱的邮件上设置不同的用户名 同时保留共享电子邮箱地址 这似乎无法通过 Office 365 运行 其工艺流程为 客户填
  • 是什么让 Erlang 适合软实时应用程序? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 一些背景 我正在致力于构建一种用于数字媒体编程的编程语言 它应该支持使用非共享消息传递和软实时的并发性 即尽最大努力计算音频 视频而不会丢失样本
  • 将 swagger 定义导入 SoapUI 社区版?

    我正在尝试使用 SoapUI 免费 开源版本 看看它对于我们经常进行的广泛 API 测试是否有用 因为现在我们大部分测试都是在 swagger ui 页面上进行的在每个服务器 应用程序中 一些功能 例如自动化一些测试用例 可能非常方便 还有
  • 如何在 div 容器内的元素之间留出空间

    我有一个弹性容器 它将由元素动态填充 容器没有固定宽度 I use max width max content 并且可以包含我想要的任意数量的元素 问题是我需要这些元素之间的间距 但不需要元素和容器之间左侧和右侧的间距 当然我可以用 ele
  • 从网站存储数据的最简单方法(在服务器端)

    我有一个非常简单的网站 实际上是单页 有一个输入字段和一个按钮 我需要将用户提交的数据存储在服务器端的某个位置 完美的方法可能是简单的文本文件 并在每次单击按钮后附加新行 日志文件也可以 据我了解 JavaScript 本身是不可能的 我在
  • 使用Java开发跨平台,不同平台字体缩放不同

    我正在为我的大学制作一些软件 需要一个 GUI 在它的第一个版本中 我让它使用系统外观 因此它看起来像 Linux Mac Windows 中的本机应用程序 我发现这很麻烦 因为我必须根据操作系统使所有 JLabel 具有不同的大小 无论分
  • “库例程调用不按顺序” sqlite3_prepare_v2(CREATE TABLE)

    你知道为什么我打电话时会收到 Library Routine Called Out Of Sequence 吗 sqlite3 prepare v2 CREATE TABLE 在空数据库上 我创建一个空数据库 然后打开它 后来我将所有必须写
  • 通过 SOAP API V2 将简单产品链接到可配置产品

    有谁知道如何通过 API 将可配置产品链接到简单产品 我不认为 Product Link API 会这样做 http www magentocommerce com wiki doc webservices api api catalog
  • MySQL中如何声明变量?

    如何在mysql中声明一个变量 以便我的第二个查询可以使用它 我想写一些类似的东西 SET start 1 SET finish 10 SELECT FROM places WHERE place BETWEEN start AND fin
  • 在“using”语句中使用各种类型 (C#)

    自从C usingstatements只是try finally dispose 的语法糖 为什么它接受多个对象仅当它们属于同一类型时 我不明白 因为它们需要的只是 IDisposable 如果它们都实现 IDisposable 应该没问题
  • 在哪里可以获得用于导入 libcore.io 的 JAR?

    我想处理一个GaiException在我的应用程序中 调试器告诉我 它位于 libcore io 包中 但导入它会产生错误 我想我需要向我的项目添加一个额外的 JAR 才能正确解析此类型 我在我的 android sdk 文件夹中进行了一些
  • HTTP PUT 在 Java 中上传文件

    Edit 我想我已经弄清楚如何执行二进制数据部分 仔细检查代码 但我很确定我做对了 现在 当我尝试按照中所述完成上传时遇到新错误Vimeo API 文档 http vimeo com api docs upload streaming Ed
  • 从 R 环境中删除对象

    我正在阅读 Hadley 的 Advanced R 在第 8 章中 他说我们可以使用以下方法从环境中删除对象 rm 但是 移除该物体后我仍然可以看到该物体 这是我的代码 e lt new env e a lt 1 e b lt 2 e a
  • 如何在 kubernetes 上设置 hostPath 卷权限?

    似乎默认情况下 Kubernetes 创建一个 hostPath 卷755对目录的权限 是否可以通过 a 将这个值设置为其他值volume规格 与手动执行操作相反chmod在相关主机目录上 initContainers name volum
  • 使用scanf()时如何区分整数和字符

    我只是使用该功能scanf 代码如下 scanf d a printf d a 当我输入1时 它会像我想要的那样打印1 但即使我输入 1a 它也会像以前一样打印 1 当用户输入非整数时 例如 2 3 12ab 1 a 我想向用户显示 输入整