<分区>
我是否可以在一个 scanf 中获得输入,用户只需键入一串数字(如果需要,用一些东西分隔,如\n 或 ' ')。它会自动存储在数组中。同样的方式在字符串中有可能吗? 有人跟我提过。 %d... 三个点表示它等同于 scanf 中的 %s。是真的吗?
我还没有看到任何类似的问题。我认为他们只是在谈论获取字符串数组。我现在正在谈论 int 数组。
标签 c
<分区>
我是否可以在一个 scanf 中获得输入,用户只需键入一串数字(如果需要,用一些东西分隔,如\n 或 ' ')。它会自动存储在数组中。同样的方式在字符串中有可能吗? 有人跟我提过。 %d... 三个点表示它等同于 scanf 中的 %s。是真的吗?
我还没有看到任何类似的问题。我认为他们只是在谈论获取字符串数组。我现在正在谈论 int 数组。
最佳答案
我认为您的问题的答案是否定的。 (但我错了见下文)
在 C 中,您确实需要非常明确地定义所有内容。
所以如果你想在一个数组中包含 5 个数字,你可以
scanf("%d %d %d %d %d", array[0], array[1],array[2],array[3],array[4]);
但这很脆弱,好像格式不完全是那么困难。
对于你想要实现的目标,我建议将整行作为一个字符串读取,然后处理该字符串以查看其中有多少数字并将它们放入你的数组中....
我最初的假设是错误的,因为从 C99 开始就有一个名为 vscanf
的函数,它看起来完全可以满足您的需求。
我建议你看看this question which really goes through it for vscanf ,但对我来说,我真的认为即使 vscanf
也可能有点脆弱,最好使用 fgets
逐行读取数据作为字符串从 获取数据>stdin
当您按下回车键时,它将从键盘将所有内容读入字符串,前提是键盘输入不会溢出您指定的最大字符数 - 然后您可以使用 sscanf
或其他函数扫描字符串以获取数字。
关于c - 一种在一个 scanf 中一次获取 int 数组输入的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49970614/