やりたいこと
タイトルの通りなのですが、何かしらのプログラムを使ってJSONファイルのコピーを行いたいと考えています。
また、その際に1日ごとのファイル名にしたいため、for文のように処理できればと考えています。
ex)
1-1.json
1-2.json
…
12-31.json
わからないこと
私自身が今使えるのはJavaScriptとC言語なのですが、JSONファイルを中身はそのままでコピーすることは可能でしょうか?
やってみたこと
いずれJSONファイルの中身はそれぞれ変更するため、テキストファイルとしてコピーしようと考えました。
こちらを参考に、C言語でのコードを作成しました。
C
1#include<stdio.h> 2 3int main(void) 4{ 5 //fcopy関数の実行 6 for(int n = 1; n < 12; n++){ 7 8 for(int m = 1; m < 31; m++){ 9 const char *fnamer = "events-1-1.txt"; //コピー元のファイル名 10 //const char *fnamew = ("events-1-2.txt"); //コピー後のファイル名 11 const char *fnamew = ("events-%d-%d.txt",n,m); //コピー後のファイル名 12 fcopy(fnamer, fnamew); //fcopy関数の実行 13 } 14 } 15 return 0; 16} 17 18//fcopy関数(テキストファイルをコピーする関数) 19int fcopy(const char *fnamer, const char *fnamew) 20{ 21 int c; 22 FILE *fpr = fopen(fnamer, "rb"); 23 FILE *fpw = fopen(fnamew, "wb"); 24 if (fpr == NULL || fpw == NULL) { 25 printf("file open error!\n"); 26 return -1; 27 } 28 29 while ((c = fgetc(fpr)) != EOF) { 30 fputc(c, fpw); //fputc関数でファイルポインタ[fpw]を1バイトずつ動かしながらデータ[c]を格納していく 31 } 32 fclose(fpw); 33 fclose(fpr); 34 35 return 0; 36}
コメントアウトしてある部分
C
1const char *fnamew = ("events-1-2.txt"); //コピー後のファイル名
のように、一つのコピー後のファイル名を指定するときちんと同じディレクトリにコピーされたファイルが作成されるのですが、
for文で連続して行われません。
ターミナル上ではコンパイル、実行ともにエラーはないのですが、
コピーファイルが作成されずに実行終了してしまいます。
追記
宣言の仕方を変えてみましたが、File open errorになってしまいました。
C
1 char newname; 2 sprintf(newname,"events-%d-%d.json",n,m); //コピー後のファイル名 3 const char *fnamer = "events-1-1.json"; //コピー元のファイル名 4 const char *fnamew = newname; 5
回答2件
あなたの回答
tips
プレビュー