c - 如何从输入中读取两个行号到 2 个数组,C 语言?在不知道数量的情况下?在 C 中
问题描述
例如,输入是:
12 23 32 41 45
22 11 43
'\n'
行以,结尾
我想将 nums 保存到a[]
and b[]
;
a[] = {12, 23, 32, 41, 45}
b[] = {22, 11, 43}
关键是我不知道每行有多少。
如果我知道 line1n
编号和 line2m
编号,我将使用“for loop”,毫无疑问。
就像,
for(int i = 0; i < n; i++) scanf("%d", a+i);
for(int i = 0; i < m; i++) scanf("%d", b+i);
但是,我不知道 n 和 m,怎么办,伙计们?
解决方案
如果您想继续使用 scanf 方法,我建议您使用 negated scanset%[^]
格式说明符。
scanf("%[^\n]", pointerToCharArray)
这应该读入任意数量的字符,但不包括指定的字符(在我们的例子中,它是一个换行符)。如果您想丢弃换行符,请按如下方式阅读:
scanf("%[^\n]\n", pointerToCharArray)
可以在下面找到参考页面的链接。否定的扫描集说明符包含在列表中:
http://www.cplusplus.com/reference/cstdio/scanf/
从这一点来看,使用 strtok() 将 scanf 的输出标记为数字数组是一件简单的事情。如果你对 strtok 不熟悉,下面提供了另一个参考链接:
http://www.cplusplus.com/reference/cstring/strtok/
我希望这有帮助!
推荐阅读
- c++ - 如何获取 C++ Char 数据类型的地址
- r - ggplot2中的离散图例中断
- url - 我可以使用 URL 链接预先选择下拉菜单的值吗?
- ios - 重新启动应用程序导致 NSInvalidArgumentException
- python - 将不同的人脸检测器与 dlib 的界标检测器一起使用
- c# - 尝试 catch 块,如果成功则继续执行
- node.js - 获取交易失败错误:没有来自任何对等方的有效响应
- c# - 如果开始角度和扫掠角度发生变化,如何将圆弧置于外边界的中心
- javascript - 如何使用 JavaScript 从浏览器打印图像
- rust - 如何做等于嵌套`impl Trait`的事情?