みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

C言語を使用し、同じ内容のファイルを増やす

始めまして、ちょっと困っている事があります。
今現在Cで、あるプログラムを作ってます。

さて困っている内容ですが、testと記述されているテキストファイルを増やす所で困ってます。

「test」と記述されている「test.txt」を記述内容は同じで
「test01.txt」「test.02.txt」「test03.txt」・・・
と増やすにはどのようにプログラムを書けば宜しいでしょうか?

*因みに、こちらが作成してみたプログラムです。
renameを使用して元のファイルを変えていく感じでやっていましたが・・

#include <stdio.h>
#define MANGA 10

/*int main(void)
{
char oldname[256] = "bace00.html", newname[256] = "bace01.html";
FILE *fp;
int i,a;

printf( "%s\n", newname );
for( a = 0; a < MANGA; a++ ){
printf( "%d",a );
printf( "%s\n", newname );
rename(newname, "bace02.html");
printf( "%sあああ\n", newname );
//rename(oldname, newname)
//newname[256] = "bace";
for( i = 0; i < MANGA; i++ ){
fp = fopen( "bace00.html","w" );
fprintf( fp, "<html>\n<title>%s</title>\n<head>\n</head>\n</html>\n" );

fclose( fp );
*/
/* ファイル名の変更 */
/*if (rename(oldname, newname) == 0){
printf("%s のファイル名を %s に変更しました。\n", oldname, newname);
}else{
perror("rename error");
}
}
}

return 0;
}*/

投稿日時 - 2009-01-20 12:18:29

QNo.4645418

困ってます

質問者が選んだベストアンサー

rename()はファイル名を変えるための関数です。コピーではありません。linux のコマンドでいうとmvですね。

ピュアなC言語の標準ライブラリの範囲では、ファイルのコピーに該当する関数はありません。まぁ、ファイル操作系のライブラリを導入してみるとか、邪道なところではcpコマンドを発行してしまうとかそんな手もあるでしょうが、一番原始的なのはコピー先のファイルを別途作成(open)して、元のファイルから読んだデータをそのまま書き込んでいくことでしょうね。学校の課題ならそれが正解だと思いますよ。仕事でやってるなら、場合によるので知りません。

投稿日時 - 2009-01-20 12:46:18

補足

上記の内容で出来ました。
有難う御座います。

作成している最中他にも出来るやり方を見つけました。
非常に助かりました。

投稿日時 - 2009-01-28 14:37:50

お礼

早い回答有難う御座います。

なるほど、ファイルのコピーに該当する関数は無いんですか・・
>コピー先のファイルを別途作成(open)して、元のファイルから読んだデータをそのまま書き込んでいく
その方法でちょっとやってみます。

投稿日時 - 2009-01-20 12:55:24

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問