c - 如何使scanf根据第一个字符停止从输入中读取?
问题描述
我被困住了,scanf()
有人可以帮我,告诉我如何读取第一个字符,scanf()
并根据该字符决定我是要读取 1 个还是 2 个或 3 个输入:例如:
scanf( char , int int int)
如果字符 S ,我该怎么做输入后停止:
S 45
解决方案
对于这类问题,为了更容易恢复错误,您应该一次读取一行输入,fgets()
并使用它sscanf()
来解析该行。
这是一个例子:
#include <stdio.h>
int main() {
char line[128];
printf("Enter letter and values:\n");
if (fgets(line, sizeof line, stdin)) {
if (*line == 'A') {
int a, b, c;
if (sscanf(line, "A %d %d %d", &a, &b, &c) == 3) {
printf("A code, a=%d, b=%d, c=%d\n", a, b, c);
} else {
printf("A code requires 3 integers\n");
}
} else
if (*line == 'S') {
int a;
if (sscanf(line, "S %d", &a) == 1) {
printf("S code, a=%d\n", a);
} else {
printf("S code requires 1 integer\n");
}
} else
{
/* handle other input codes... */
}
}
return 0;
}
推荐阅读
- azure - 如何向使用 Azure 服务总线 Java SDK 的发布者/订阅者客户端添加重试选项(重试策略)?
- mysql - Powershell String 保持 CR & LF
- c# - TPL Dataflow 管道中的图像刷新问题
- kubernetes - AKS 管道中的 Kudu 服务
- python - 为什么按钮移动不正确
- ansible - 如何使用 Ansible 停止 VM 并验证 VM 是否已停止?
- sql - 在报表生成器上设置布尔过滤器时出错
- reactjs - 为什么即使更改的 prop 或 state 与 JSX 无关,React 也会重新渲染组件?
- javascript - 某些用户在创建后不存在于“本地”数据库中
- operating-system - Genode 和 Sculpt OS 之间的区别,以及它们的用途