0
我一直堅持這一段時間。我將如何去將pgm文件中的像素值0-255複製到數組中?這是我迄今爲止所擁有的。我知道我已經脫離了原來的想法。如何從.pgm文件中讀取像素值並將其複製到數組中。 C編程
#include <stdio.h>
#include <stdlib.h>
int main(int argc, int *argv[])
{
int i = 0, j = 0;
unsigned int str[1000];
FILE *pgmFile;
if (argc != 2)
{
printf ("ERROR, Not enough arguments.");
exit(EXIT_FAILURE);
}
if ((pgmFile = fopen(argv[1], "r")) == NULL)
{
printf ("ERROR, File cannot be opened");
exit(EXIT_FAILURE);
}
do
{
fscanf (pgmFile, "%d", str[i]);
printf ("%d", str[i]);
i++;
}
while (str[i] != EOF);
fclose (pgmFile);
return 0;
}
所以這讀取文件中的行由行,並打印出來?那麼你所需要做的就是讀取標題行(忽略註釋行),然後用我認爲像素值分割出空白分隔的行。你堅持哪部分? – Rup
我會在接下來的標題上工作,但是當我在我的pgm文件上運行此代碼時,我得到0代表空格和數字,例如1882140160表示黑色空格。爲什麼它突破了0-255範圍?我的照片是黑白的。 –
您的循環終止處於關閉狀態。首先,fscanf返回EOF。其次,您在檢查while條件之前增加'i',以便讀入單位內存。這可能意味着您正在「讀取」文件末尾,此時您將在'str'中打印出垃圾。 –