私は現在、C を学習する方法として Project Euler の問題に取り組んでおり、問題 8 に問題があります。実際の数学とプログラムの主要なビットは問題ありませんが、この方法では大きな (1000 桁) から個々の桁を読み取る必要があります。番号をファイルに入れました。
以下のコードは、私のファイル「test.txt」が番号「123456789」であるテストケース用です。私がやろうとしているのは、各桁を別々の行に出力することです。
#include <stdio.h>
int main()
{
int c = 0;
FILE *fp;
fp = fopen("test.txt", "r");
while(c != EOF)
{
c = fgetc(fp);
printf("%i\n", c);
}
fclose(fp);
}
このコードを実行すると、出力が得られます
49
50
51
52
53
54
55
56
57
10
-1
私のコードから本当に単純なものが欠けている予感があります。それは fgetc ビットにあると思います。この場合、使用するより良い関数は何でしょうか。また、なぜこのような奇妙な出力が得られるのかにも興味があります。1000 桁の数字で試してみると、49 前後から 50 程度までの数字で同様のパターンが見つかります。ほぼ周期的に出力されます。私はCの初心者に過ぎないことを覚えておいてください。