首页 > 解决方案 > 如何从输入中读取两个行号到 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,怎么办,伙计们?

标签: cscanf

解决方案


如果您想继续使用 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/

我希望这有帮助!


推荐阅读