実現したいこと
renameフォルダの中に入っているファイル名を取得し決まった形式のファイル名に変更したい。
ここに実現したいことを箇条書きで書いてください。
- ▲▲できれば1から12までの数値を入力すると取り込んだファイル名が【佐藤】業務レポート_2023〇〇.docxのような名前に変換される。
〇〇の部分は1から12まで入力した数値が入る。 - ▲▲renameフォルダに入っているファイルは一つだけになります。
前提
手動でファイル名を変更して管理していましたが入力ミスで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
回答1件
あなたの回答
tips
プレビュー