ファイルから文字列を読み込み、並びを逆にして別のファイルに出力するプログラムを作りたいのですが、何となくイメージは出来てはいるものの、for文の所からめちゃくちゃになっていて、どういうことをすればいいのかを教えてほしいです。
C
1#include <stdio.h> 2#include <stdlib.h> 3int main(void) 4{ 5 FILE *fp_test = fopen("test.txt", "r"); 6 FILE *fp_sample; 7 char *p = "sample.txt"; 8 fp_sample = fopen(p, "w"); 9 int i, m; 10 11 for (*(fp_test + i) = '\0'; *(fp_test + i) >= 0; *(fp_test + i)--) { 12 m = fputc(*fp_test + i, fp_sample); 13 } 14 15 16 return 0; 17}
Visual studio 2017
質問はエラー文の解決の仕方ですか?
それともfputsの使い方の解説ですか?
void reverse(char* str) { strを裏返す } を実装すれば、そいつを通したのちfputsすればいいんでね?
for文がわけのわからないことになってませんか?そもそも i が初期化されてないし…。
コンパイルエラーが出てるならそれも質問に書くべきですし、「危うい」では何を気にしているのかわからないので「fputcの使い方がわからない」など具体的に質問を書いてください。
epistemeさん、
> void reverse(char* str) { strを裏返す } を実装すれば、
そう思うのですが、ファイルサイズの考慮が必要。10Gbyteでも malloc()でOK ? まあ、10K位のバッファでお尻から読み書き?
もっとも提示のコード見る限りだと、ファイルアクセスも大分、問題有り。 (と言うか、出来てない)
>ファイルサイズの考慮が必要
行単位の処理じゃないのかなぁ?
1行10Gは考えられないんだけど?
-------------------------------------------------
abc def ghi
12345 6789
xyz
-------------------------------------------------
test.txt が上記の場合、sample.txt はどのような結果を期待していますか?
スペースや改行で区切られた個々の文字列を逆にする
-------------------------------------------------
cba fef ihg
54321 9876
zyx
-------------------------------------------------
行内の文字列を逆にする
-------------------------------------------------
ihg fed cba
9876 54321
zyx
-------------------------------------------------
ファイル全体の文字列を逆にする
-------------------------------------------------
zyx
9876 54321
ihg fed cba
-------------------------------------------------
ファイルの行単位で文字列を逆にする
-------------------------------------------------
xyz
12345 6789
abc def ghi
-------------------------------------------------
まずはファイルを読み込む処理を作りましょうよ。それが出来るだけの技術がないのにやることが飛躍しすぎ。順番にやりましょう。