プログラムにファイルからの入力を読み取らせようとしていますが、fscanfが通常行う空の行をスキップしません。ファイルとスキャンファイルへのループは次のとおりです。
inFile = fopen("text.txt", "r");
for(i = 0; fscanf(inFile, "%s", &input[i]) != EOF; i++){
printf("%d %s\n", i, input[i]);
}
出力:
0 one
1 two
2 three
3 four
4 five
5 six
6 seven
7 eight
8 nine
9 ten
10 eleven
11 twelve
12 thirteen
13 fourteen
14 fifteen
15 sixteen
16 seventeen
17 eighteen
18 nineteen
19 twenty
20 thirty
21 forty
22 fifty
23 sixty
24 seventy
25 eighty
26 ninety
それは私が望むものではありません。読み取られるテキストが、それが言う配列内の位置を表すようにしたい。つまり、「90」はinput[89]にあります。
読み取られるファイルは次のとおりです。
one
two
three
four
five
six
seven
eight
nine
ten
eleven
twelve
thirteen
fourteen
fifteen
sixteen
seventeen
eighteen
nineteen
twenty
thirty
forty
fifty
sixty
seventy
eighty
ninety
これらの各単語は、どの行から読み取られているかを表すと想定されています。20行以上の間にスペースを追加しているので、iを使用して、読み込まれるデータの行を表すことができます。つまり、テキストジェネレーターに数値を作成して読み取ります。
999.99
なので
nine hundred ninety-nine and 99/100
tl; dr単語を含む配列内の位置をハードコーディングしたくないので、イテレーターに作業を行わせようとしています。配列内の位置を取得するには、空白行を読み取る必要があります。
fscanfにここでの仕事をさせる方法はありますか?それとも私は何か他のものを使うべきですか?
ありがとうございました