20行ほどで構成されているテキストファイル(a.txt)を読み込み、
20行目を1行目、19行目を2行目・・・・2行目を19行目、1行目を20行目。
のように新しいテキストファイル(b.txt)を書き出す。
といったプログラミングのやり方を教えていただきたいです。
よろしくお願いします。
テキストを読み込んで、終行から書き出す方法。
Re: テキストを読み込んで、終行から書き出す方法。
(「1行」がどれほどの長さになるのかにもよりますが)
全部一度に読み込んでしまっても問題の無いサイズなのであれば,
最初に全行読み出してしまい(読み出したデータは,何らかの 順序がわかる方法 で保持しておいて),
後はそれを逆順になるように新規ファイルに出力すればよいのではないでしょうか.
全部一度に読み込んでしまっても問題の無いサイズなのであれば,
最初に全行読み出してしまい(読み出したデータは,何らかの 順序がわかる方法 で保持しておいて),
後はそれを逆順になるように新規ファイルに出力すればよいのではないでしょうか.
Re: テキストを読み込んで、終行から書き出す方法。
まず、ファイル a.txt を読み込み用にオープンする。苦C さんが書きました:20行ほどで構成されているテキストファイル(a.txt)を読み込み、
20行目を1行目、19行目を2行目・・・・2行目を19行目、1行目を20行目。
のように新しいテキストファイル(b.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;
}
理解できない場合は、自分でよく調べた後、
何が分からないのかを遠慮なく質問してください。