Yuuuu さんが書きました: ↑4年前
条件としてはテキストの文字数は236文字以内行数は500行です。下の通りのプログラミングを書いたのですが一行しか読みこまれずこまっています。。
全行読めるように添削して頂けませんか?
あなたのコードの問題点は、以下のとおりです。
まず、arrayの要素数が足りません。
ここで扱う「文字」が1バイトで表せる文字のみであると仮定しても、
236要素しか無いので236文字の行を入れるには改行文字と終端文字分の2要素が足りません。
また、例えば
UTF-8では1文字を最大4バイトで表すので、これを扱うのであれば要素が4倍必要です。
さらに、複数の文字を合成してできる絵文字などを1文字としてカウントするのであれば、さらに多くの要素が必要でしょう。
次に、非標準の識別子fprintsが定義なしで使われています。
文脈から、ここはかわりにprintfを使うべきでしょう。
fprintsをprintfにマクロ定義してコンパイルしたところ、入力の全ての行を読み込むことができました。
https://wandbox.org/permlink/J0QyJABh8RiXB98D
※1バイトの文字が235個や236個ある行も読み込めているように見えますが、
一度に読み込むには配列の要素数が足りず、2回に分けて読み込まれています
fprintsが使われているため、普通はコンパイル(ここではリンクなども含めた実行ファイルを作る処理)ができず、
実行もできないため、1行も読み込めないはずです。
あなたがコンパイル・実行しているコードが意図したものであること、および最新のものであることを確認するべきでしょう。
もしくは、読み込んだ行を全てメモリ上に保持したい、ということでしょうか?
ちなみに、あなたが書いたものはプログラミングではなくプログラムです。
プログラムを書くことを、プログラミングといいます。
Yuuuu さんが書きました: ↑4年前
もう一つ質問があります。
例えばFgetsを使ってある行の最初の文字が空欄の場合配列の最初の中身は空欄になりますか?
もしくは文字がでてきたらそれを一番最初にいれますか?
「文字が空欄」というのは意味がよくわかりませんが、空行も空白文字もそのまま読み込まれます。
意味がわかりません。コピペミス、消し忘れ、もしくは途中で送信してしまったのでしょうか?