Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从stdin读取输入,直到EOF逐行读取,每行在C中包含四个空格分隔的整数_C_Unix_Input_Stdin_Eof - Fatal编程技术网

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

如何从stdin读取输入,直到EOF逐行读取,每行在C中包含四个空格分隔的整数,c,unix,input,stdin,eof,C,Unix,Input,Stdin,Eof,如何从stdin读取输入,直到EOF逐行读取,每行包含四个C中的空格分隔整数。可以通过如下命令输入: $echo 1 2 3 4 |/myProgram 或 $cat file.txt 1234 0-3 2-4 $./myProgram

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

$echo 1 2 3 4 |/myProgram

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

$./myProgram “这是它将输出我的计算结果的地方”

然后我想把单个整数保存到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()

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]);
}
char结构协调[101];
char*ptr;
int坐标[4];
while(fgets(strCoordinates,sizeof(strCoordinates,stdin)!=NULL){
char*s=结构坐标;
对于(int x=0;x<4;x++){
坐标[x]=strtol(s和ptr,10);
s=ptr;
}
printf(“%d,%d,%d,%d\n”,坐标[0],坐标[1],坐标[2],坐标[3]);
}

scanf(“%s”,strCoordinates)
不是“
逐行读取”
”。那么
while(scanf(“%100[^\n]]*c,strCoordinates)!=EOF)
@bluepixy为什么使用
&ptr
而不是
&s
?如果您确实想要
ptr
,为什么不将其设置为
for
循环的本地呢?@Paul 1)可能不是问题,但两个指针是
限制
<代码>长字符串(const char*restrict nptr,char**restrict endptr,int base)。2) 没什么意义。因为它是代码的一部分,所以对另一个的影响很小,就是最近定义使用我添加的变量。这些限制只是说nptr和endptr不指向同一个数组。因为&s肯定不在字符串s指向的同一数组中,所以即使传递了&s,也没关系