C言語で実行ファイル直下にあるディレクトリに入っているファイル名を取得し、その取得したファイルの名前を変更したい。

実現したいこと

renameフォルダの中に入っているファイル名を取得し決まった形式のファイル名に変更したい。
ここに実現したいことを箇条書きで書いてください。

〇〇の部分は1から12まで入力した数値が入る。

前提

手動でファイル名を変更して管理していましたが入力ミスで0が一つ多くついてる等のケアレスミスが目立ち、ミスが無いように修正してくれるプログラムを作成しようと思い至りました。

C言語で作成しています。コンパイルが通りましたが、ファイル名が変更されません。
renameフォルダ内のファイル名取得はできているようなのですがrename関数実行の所で躓いています。

ひとまず、ファイル名を取得し新規.txtにファイル名が変更されるところまで作り、その後改めて自分で入力部分を作成したいと思っています。
ここまでで試行錯誤して5時間かけましたが、ファイル名が変更されない原因が分からないのでご指摘願います。

発生している問題・エラーメッセージ

ファイル名が変更されない。

該当のソースコード

C

1#include <stdio.h>2#include <dirent.h>3 4int main(void)5{6 // ファイル名を格納するchar変数を宣言する7char filename[1024];8 9 DIR *dir;10 struct dirent *dp;11 char path[64] = "./rename/";12 13 dir=opendir(path);14 15 for(dp=readdir(dir);dp!=NULL;dp=readdir(dir)){16 printf("%s\n",dp->d_name);17 strcpy(filename, dp->d_name);18 }19 20 closedir(dir);21 22// ファイル名を新規.txtに変更する23printf("ファイル名を変換します。");24rename(filename, "新規.txt");25return 0;26}27 28```gcc version 7.3.0 (x86_64-posix-sjlj-rev0, Built by MinGW-W64 project)29```Windows11 PowerShell 30 31### 試したこと 32①文字化けを起こしていたのでコンパイル時にオプションで-fexec-charset=CP932と付けてコンパイルをしました。 33 34②実行ファイルと同じ場所にあるファイルしか変更できないのではないかと思い、rename関数の引数にpathを付けるやり方を検索してみましたが分からずじまいでした。 35 36### gcc 37 38

コメントを投稿

0 コメント