0
私はしばらくこのことに固執しています。どのようにピクセル値0-255をpgmファイルから配列にコピーするのですか?これは私がこれまで持っていたものです。私はそれがそうであると思われるものから離れていることを知っている。.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;
}
これはファイルを1行ずつ読み込んで印刷しますか?次に、ヘッダー行(コメント行を無視して)を読んだ後、空白で区切られた行を、私が思うピクセル値で分割します。あなたはどこにいるのですか? – Rup
私はその次のヘッダで作業しますが、私のpgmファイルでこのコードを実行すると、白いスペースは0、黒いスペースは1882140160のような数字が得られます。なぜそれが0-255の範囲から外れますか?私の写真は白黒です。 –
ループ終了はオフです。最初に、fscanfはEOFを返します。第2に、while条件がチェックされる前に 'i'をインクリメントして、ユニット化されたメモリを読み込みます。これはおそらく、ファイルの最後を「読んでいる」ことを意味し、その時点で 'str'にガベージを表示します。 –