ファイル操作について

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

ファイル操作について

#1

投稿記事 by hana » 18年前

おはようございます。
ファイル操作について勉強しているのですが、分からないところがあってメールしました。
どなたか助言をお願いします。

プログラムの内容は、テキストファイル(タブで区切られた10進数の数値が64個)を読み込んできて
プログラムの中でテキストファイルの数値の順序を入れ替えるものです。(des暗号のs-boxなんですが・・・)

1つのテキストファイルの中身を入れ替えるところまではできたのですが、同様のテキストファイルが8個あった
場合の処理の方法がいまいち分かりません。

自分でやっててもコンパイル通らないだろうなぁ・・・とおもいつつ、
8個のテキストファイルの名前を1.txt、2.txt、3.txt・・・8.txt、としてfor文で回してみましたが
当然うまくいきませんでした。(あさはかでした。)
for(i=1;i<3;i++){
    fp = fopen("i.txt","r");
    for(j=0;j<64;j++){
    fscanf(fp,"%d",&s[j]);
}
fclose(fp);
このように複数のファイルを準備して同じ処理をする場合の方法を教えてください。

バグ

Re:ファイル操作について

#2

投稿記事 by バグ » 18年前

単純に配列を増やせばいいのではないでしょうか?
例えば、2次元配列を使って格納するとか…

keichan

Re:ファイル操作について

#3

投稿記事 by keichan » 18年前

"i.txt"はいつまで経っても"i.txt"になります。
あと、for文の外で fclose してますがfor中に入れないと
最後にオープンしたファイルしか閉じません。
char filename[32] = {'\0'};
for( i = 1; i < 3; ++i ) {
	sprintf(filename, "%d.txt", i);
	fp = fopen(filename, "r");
	...
	fclose(fp);
}

hana

Re:ファイル操作について

#4

投稿記事 by hana » 18年前

バグさん、keichanさんありがとうございます。
確かに配列を2次にして考えればいけそうです。(^_^)v

char filename[32] = {'\0'};
for( i = 1; i < 3; ++i ) {
sprintf(filename, "%d.txt", i);
fp = fopen(filename, "r");
 ↑
あと、keichanさんのような方法があるとは知りませんでした。

sprintfの機能は知ってても、ほかの構文と組み合わせて使うのって、ひらめき的なものがあるんですかね?
(経験もない私が言うのもなんですが・・・)

お二人の助言を参考にがんばります。

hana

Re:ファイル操作について

#5

投稿記事 by hana » 18年前

すみません、「質問」ではなくて「お礼」です。

閉鎖

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