c - 如何让 scanf 只接受整数?
问题描述
我是 c 的新手,我想知道这样的事情是否可行,
我正在尝试编写像坐标一样的输入。用户将输入一个像 (3,4) 这样的坐标,程序会将输入扫描为 3 和 4,它们分别记录在变量 cor1、cor2 中。
我正在尝试这样的输出:
Enter coordinates: (3,4)
3 4 /*printf("%d %d",cor1,cor2)*/
这可能吗?
谢谢!
解决方案
该scanf()
函数扫描来自控制台的输入。为了从控制台获取输入,您需要指定要获取的输入类型。对于int
值,我们使用%d
格式说明符来指示我们将输入int
值作为输入。
现在回答你的问题:你想如何读取用户的输入?用户应该输入3 4
还是(3,4)
?让我们讨论每个场景:
- 情况1
在这里用户将输入3 4
.
int cor1, cor2;
printf("Enter coordinates: ");
scanf("%d %d", &cor1, &cor2);
printf("%d %d", cor1, cor2);
- 案例2
在这里用户将输入(3,4)
. 在我输入代码之前,请注意有 3 个冗余char
值:( , )
. 我们需要从输入中丢弃这些字符。如您所知,我们使用从控制台%c
输入值。char
为了丢弃那些多余的字符,我们只需使用%*c
格式说明符。
int cor1, cor2, valueInput;
printf("Enter coordinates: ");
valueInput=scanf("%*c %d %*c %d %*c", &cor1, &cor2);
if(valueInput==2){
printf("%d %d", cor1, cor2);
}else{
printf("Failed to parse inputs");
}
这将允许您输入(3,4)
和输出3 4
。为了添加额外的检查,我们还检查 的return
值scanf()
。如果您不熟悉某个return
值,请查看:Here。该scanf()
函数返回成功输入的数量。作为额外检查,我们还检查 的return
值scanf()
。在第一种情况下,我跳过了检查,以免您感到困惑。有关更多信息,请查看:
格式说明符:w3schools
格式化 I/O:overiq
推荐阅读
- python - INFO:tensorflow:Error 报告给 Coordinator:
, - java - 无法从发布 apk 登录使用 Firebase 身份验证(无 Google Play)
- apache-spark - 从模式字符串 Java-Spark 创建 JSON 模式
- r - 阿拉伯语 WordCloud R Studio
- sql - 插入语句中同一列的两个 case 语句
- c# - ConcurrentDictionary Remove() 不可访问
- excel - 在 Microsoft Excel 中打开使用 ClosedXML 创建的电子表格,而不创建临时文件
- facebook - Unity 游戏的 Facebook 应用邀请设置
- php - 通过 ajax 在 Laravel 中上传文件
- java - 整数数组索引