私は、Cで宝くじプログラムを書いて、前週の選択した数字を配列に読み込みたいと考えています。私は5つの列がtabulatorsで区切られているテキストファイルを持っています。私の質問は次のようになります:テキストファイルから数字を正しく読み取る方法は?
- どうすれば列を分けるべきですか? (コンマ、セミコロン、タブレーターなど)
- 最後の行にEOFを含める必要がありますか? (例:-1、 "EOF")これを行うには、受け入れられるか「公式な」約束がありますか?
- 数字の読み取りにはどの機能を使用する必要がありますか?テキストファイルからデータを読み取るための適切な、あるいは「受け入れられた」方法はありますか?
「私は億万長者になる」というゲームのためにCプログラムを書いていました。その中で私は、各行を1行全体を保持するのに十分な大きさの配列に読み込む、ある種の関数を使用しました。その後、私はこのような変数にそのデータを分離:
line: "text1";"text2";"text3";"text4"endline (-> line loaded into a buffer array)
text1 -> answer1 (until reaching the semicolon)
text2 -> answer2 (until reaching the semicolon)
text3 -> answer3 (until reaching the semicolon)
text4 -> answer4 (until reaching the end of the line)
endline -> start over, that is read a new line and separate its contents into variables.
それは適切に働いたが、それは、プログラマには十分だったかどうかは知りません。 (私はまだプログラマーではなく、大学でコンピュータサイエンスを学んでいます)
すべての回答とアドバイスをお待ちしています。あなたの親切な助けを前にありがとう!
'tabulators'は 'tabs'の基礎であり、UnicodeはU + 0009 HORIZONTAL TABULATIONとU + 000B VERTICAL TABULATIONを定義しますが、ほとんどの人は 'tabulators'や 'tabulation'ではなく 'tab' (U + 000Bの場合は 'vertical tab'を使用します)。 –
コロン ':'またはセミコロン ';'は、数値データの優れた区切り文字を作成します。テキストファイルを見るときには必ずしも目に見えないので、人間の読書のためにデータをより難しくする傾向があるので、 'tabs'を使用しないことを提案します。 'fgets()'の呼び出しを使って行全体を読み込み、 'sscanf()'または 'strtok()を使ってメモリ内の行を解析することができるので、各グループのグループを改行で' \ n ' ) ' – user3629249