テキストを読み込んで、終行から書き出す方法。

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
苦C

テキストを読み込んで、終行から書き出す方法。

#1

投稿記事 by 苦C » 8年前

20行ほどで構成されているテキストファイル(a.txt)を読み込み、
20行目を1行目、19行目を2行目・・・・2行目を19行目、1行目を20行目。
のように新しいテキストファイル(b.txt)を書き出す。

といったプログラミングのやり方を教えていただきたいです。
よろしくお願いします。

アバター
usao
記事: 1889
登録日時: 12年前
連絡を取る:

Re: テキストを読み込んで、終行から書き出す方法。

#2

投稿記事 by usao » 8年前

(「1行」がどれほどの長さになるのかにもよりますが)
全部一度に読み込んでしまっても問題の無いサイズなのであれば,
最初に全行読み出してしまい(読み出したデータは,何らかの 順序がわかる方法 で保持しておいて),
後はそれを逆順になるように新規ファイルに出力すればよいのではないでしょうか.

かずま

Re: テキストを読み込んで、終行から書き出す方法。

#3

投稿記事 by かずま » 8年前

苦C さんが書きました:20行ほどで構成されているテキストファイル(a.txt)を読み込み、
20行目を1行目、19行目を2行目・・・・2行目を19行目、1行目を20行目。
のように新しいテキストファイル(b.txt)を書き出す。

といったプログラミングのやり方を教えていただきたいです。
まず、ファイル a.txt を読み込み用にオープンする。
ファイル b.txt を書き込み用にオープンする。
オープンしたファイルから 1行読み込むには fgets を使う。
オープンしたファイルに 1行書き込むには fputs を使う。
ここまでは分かっていますか?

コード:

#include <stdio.h>

int main(void)
{
	FILE *fin, *fout;
	fin = fopen("a.txt", "r");
	if (fin == NULL) { puts("can't open a.txt"); return 1; }
	fout = fopen("b.txt", "w");
	if (fout == NULL) { puts("can't create b.txt"); return 2; }
	char buf[1000];
	while (fgets(buf, sizeof buf, fin) != NULL)
		fputs(buf, fout);
	fclose(fout);
	fclose(fin);
	return 0;
}
理解しているという返信をもらえると、次の段階に進みます。
理解できない場合は、自分でよく調べた後、
何が分からないのかを遠慮なく質問してください。

返信

“C言語何でも質問掲示板” へ戻る