如何从stdin读取输入,直到EOF逐行读取,每行包含C中四个空格分隔的整数

时间:2015-03-29 09:10:27

标签: c unix input stdin eof

如何读取stdin的输入,直到EOF逐行读取,每行包含四个空格分隔的整数。可以通过以下命令输入:

$ echo 1 2 3 4 | ./myProgram

$ cat file.txt
1 2 3 4
0 -3 2 -4

$ ./myProgram< file.txt的
"这是输出我的计算的地方"

然后我想将各个整数保存到int变量。

char strCoordinates[101];
    char *ptr;
    int coordinates[4];
    long int tempCoordinates;
    while(scanf("%s", strCoordinates) != EOF) {
        tempCoordinates = strtol(strCoordinates, &ptr, 10);
        int lastDigit = 0;
        for (int x = 4; x >= 4; x--) {
            lastDigit = tempCoordinates % 10;
            coordinates[x] = lastDigit;
            tempCoordinates = (tempCoordinates - lastDigit) / 10;
            }
    }

这就是我的尝试,但似乎有点复杂。 。

任何帮助都会受到极大的赞赏。不确定是否使用scanf()sscanf()fscanf()gets()

1 个答案:

答案 0 :(得分:2)

单向的例子

char strCoordinates[101];
char *ptr;
int coordinates[4];
while(fgets(strCoordinates, sizeof(strCoordinates), stdin) != NULL) {
    char *s = strCoordinates;
    for (int x = 0; x < 4; x++) {
        coordinates[x] = strtol(s, &ptr, 10);
        s = ptr;
    }
    printf("%d,%d,%d,%d\n", coordinates[0],coordinates[1],coordinates[2],coordinates[3]);
}