如何在C中的单行输入中解析三元组

时间:2018-06-18 19:57:25

标签: c

我正在进行一项任务,我得到这样的输入:

(x y z)

其中xyz是整数,我们称之为三元组。

我需要获得很多这些,但仅限于一行。输入应该是这样的:

1 2 3 3 2 1 3 1 3 4 2 1 8 2 1

我需要将此输入转换为三元组,例如(1, 2, 3) (3, 2, 1), (3, 1, 3)等等。

我的问题是,如何读取整个(未定义大小)数字行并存储这些数字?

1 个答案:

答案 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]