【发布时间】:2011-09-08 07:36:36
【问题描述】:
我正在尝试读取数字行并对其进行一些计算。但是,我需要以某种方式将它们逐行分隔,但我不知道该怎么做。这是我的代码:
int main()
{
int infor[1024]; //2-d array perhaps??
int n, i;
i=0;
int imgWidth, imgHeight, safeRegionStart, safeRegionWidth;
FILE *fp;
fp = stdin;
while (!feof(fp))
{
fscanf(fp, "%d", &infor[i++]);
}
}
输入看起来像这样:
4 3 1 2 -16777216 -16711936 -65536 -16777216 -1 -65536 -65536 -16711936 -16777216 -65536 -16711936 -16777216
3 4 1 1 -16777216 -16711936 -1 -1 -65536 -16777216 -16777216 -65536 -1 -1 -65536 -16711936
谁能解释如何逐行移动?
编辑:
int main()
{
FILE * fp = stdin;
char buffer[1024];
long arr[2][16];
int i = 0,
j = 0;
char * pEnd;
while(fgets(buffer, sizeof(buffer), fp))
{
j = 0;
if(buffer[0] == '\n')
continue;
pEnd = buffer;
while(*pEnd != '\0')
{
arr[i][j++]=strtol(pEnd,&pEnd,10);
}
i++;
}
int imgWidth,
imgHeight,
safeRegionStart,
safeRegionWidth;
imgWidth = arr[1][0];
imgHeight = arr[1][1];
safeRegionStart = arr[1][2];
safeRegionWidth = arr[1][3];
printf("Value of i is %d\n", i);
printf("%d %d %d %d ",
imgWidth,
imgHeight,
safeRegionStart,
safeRegionWidth);
return 0;
}
【问题讨论】:
-
@user373466 将其设为
stdin确实会有所不同,因为您必须手动输入这些值(或者通过重定向输入,我想)。 -
@user373466 如果您手动输入,您需要在一行的第一行输入所有数字,用空格分隔,然后按 Enter。除非您通过不同的方式输入,否则您不能在每个输入后按 Enter。
-
我没有手动输入它们。我正在尝试从命令行(Stdin)读取,因为我不会获得文件名...
-
@user373466 如何重定向值?也许更多地了解这个过程将有助于找出最好的方法。就目前而言,使用我给你的代码,它意味着从按照你指定的方式格式化的文件中读取。
-
我只是通过命令行重定向,即 a.exe