我正在尝试使用scanf通过文件读取不同的输入行。我只能阅读第一行并存储它。
这是我写的代码。
#include <stdio.h>
#include <string.h>
int imageWidth, imageHeight, safeRegionStart, safeRegionWidth;
main(void)
{
int i=0, j=0;
int totalP, pixel, totalSafeP, concat;
int unsigned r,g,b;
scanf("%d %d %d %d", &imageWidth, &imageHeight, &safeRegionStart, &safeRegionWidth);
totalP = imageWidth * imageHeight ;
totalSafeP = imageHeight * safeRegionWidth;
char arr[512][50];
char arr1[imageWidth][imageHeight];
printf("total # of pixels: %d\nTotal # of safe Pixels: %d\n", totalP, totalSafeP);
memset(arr,0x0,sizeof(arr));
while(i!=totalP)
{
i++;
scanf("%d", &pixel);
/*bit shifting to get r,g,b*/
int r = pixel << 8;
r = (unsigned int)logicalRightShift(r, 24);
int g = pixel << 16;
g = (unsigned int)logicalRightShift(g, 24);
int b = pixel << 24;
b = (unsigned int)logicalRightShift(b, 24);
//printf("%d) r:%d , g:%d , b:%d\n",i, r,g,b);
fillDescription(arr, r, g, b);
}/*End for scanning all pixels*/
}/*end main*/
答案 0 :(得分:1)
我的建议是永远不要使用scanf(或fscanf)来读取输入。使用其他方法(fgets等)读取输入,然后解析输出。可能与sscanf,可能与其他系统。我已经看到人们直接用scanf读取的错误太多了。
答案 1 :(得分:0)
您的代码正在从标准输入而不是从文件中读取数据。您的代码尖叫,要求进行错误检查,但在最佳情况下工作。以下是运行它的示例:
$ ./test
1 2 3 4
total # of pixels: 2
Total # of safe Pixels: 8
12
13
$
基本上,不要忘记点击<Enter>
,scanf
函数逐行解析数据。
答案 2 :(得分:0)
正如Vlad Lazarenko所说,你正在从标准输入中读取数据。如果您想从文件中读取,可以考虑使用fscanf。