如何从stdin读取输入,直到EOF逐行读取,每行在C中包含四个空格分隔的整数
如何从stdin读取输入,直到EOF逐行读取,每行包含四个C中的空格分隔整数。可以通过如下命令输入: $echo 1 2 3 4 |/myProgram 或 $cat file.txt如何从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
1234
0-3 2-4 $./myProgram
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,也没关系