dポイントプレゼントキャンペーン実施中!

始めまして、ちょっと困っている事があります。
今現在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;
}*/

A 回答 (1件)

rename()はファイル名を変えるための関数です。

コピーではありません。linux のコマンドでいうとmvですね。

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

この回答への補足

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

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

補足日時:2009/01/28 14:37
    • good
    • 0
この回答へのお礼

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

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

お礼日時:2009/01/20 12:55

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!