我正在进行一项任务,我得到这样的输入:
(x y z)
其中x
,y
和z
是整数,我们称之为三元组。
我需要获得很多这些,但仅限于一行。输入应该是这样的:
1 2 3 3 2 1 3 1 3 4 2 1 8 2 1
我需要将此输入转换为三元组,例如(1, 2, 3) (3, 2, 1), (3, 1, 3)
等等。
我的问题是,如何读取整个(未定义大小)数字行并存储这些数字?
答案 0 :(得分:1)
如果您从标准输入获得输入,您可以使用scanf来完成此操作,以下应该是一个好的开始,您应该添加更多验证来完成代码:
#include <stdio.h>
int main(void)
{
int x,y,z;
while(scanf("%d %d %d ",&x,&y,&z)==3) {
printf("[%d, %d, %d]\n",x,y,z);
}
}
将test.txt与您提供的值一起使用,将它们分成多行也可以,只要它们是3个集合并按空格分隔:
cat > test.txt << EOF
1 2 3 3 2 1 3 1 3 4 2 1 8 2 1
EOF
运行示例:
./a.out < test.txt
[1, 2, 3]
[3, 2, 1]
[3, 1, 3]
[4, 2, 1]
[8, 2, 1]