提示コード最下部のfor文内で確認と書かれたprintf();関数で出力されるはずの文章がなぜかsample.txtになってしまいますこれはなぜなのでしょうか?上のコードのファイルを探す**while()文やその上のif()文ないでは普通に表示される(sampl - コピー(2).txt)**のですがなぜなのでしょうか?
int main() { //ワイルドカード const char* extension = "*.txt"; // const char* extension = "*.lib"; LPSTR FullPath;//フルパス FullPath = (LPSTR)malloc(sizeof(LPSTR) * MAX_PATH); DWORD e = GetModuleFileNameA(NULL, FullPath ,MAX_PATH); char drive[MAX_PATH * 2],dir[MAX_PATH * 3],fname[MAX_PATH * 2],ext[MAX_PATH * 2]; _splitpath_s((char*)FullPath,drive, size_t(MAX_PATH * 2),dir,size_t(MAX_PATH * 3), fname,size_t(MAX_PATH * 2),ext,size_t(MAX_PATH * 2));//パス名を構成要素に分解します // printf("\n完全パス : %s\n",(char*)FullPath); // printf("ドライブ : %s\n",drive); // printf("ディレクトリ パス : %s\n",dir); // printf("ベース ファイル名 (拡張子なし) : %s\n",fname); // printf("ファイル名の拡張子 : %s\n",ext); //ディレクトリにワイルドカードを付与(パスを作成完了) strcat_s(dir,(sizeof(dir)),extension); // printf("%s\n",dir); if(e == ERROR_INSUFFICIENT_BUFFER) { ErrorConf(e);//エラー表示 }else { // printf("正常です。\n"); } printf("ファイルをリストアップ\n\n"); FILE *file = NULL; if(file == NULL) { printf("あああ"); } WIN32_FIND_DATAA data; LPWIN32_FIND_DATAA Next_data = new WIN32_FIND_DATAA(); LPCSTR p = dir; HANDLE h = FindFirstFileA(p,&data); printf("path: %s\n",p); int next = 0; char *list[100]; ////////////////////////////////////////////////////////////////////////////////////////////// if(data.cFileName != "list_up.txt") { strcat_s(data.cFileName,sizeof(data.cFileName),"\n"); list[next] = (char*)malloc(sizeof(data.cFileName)); list[next] = data.cFileName; printf("%s",list[ next ]); next++; } //二つ目以降 while(FindNextFileA(h,Next_data) != 0) { strcat_s(Next_data->cFileName,sizeof(Next_data->cFileName),"\n"); list[next] = (char*)malloc(sizeof(Next_data->cFileName)); list[next] = Next_data->cFileName; printf("%s",list[ next ]); next++; } --next; fopen_s(&file,"list_up.txt","w"); for(int j = 0; j < next; j++) { printf("確認: %s",list[j]); } /////////////////////////////////////////////////////////////////////////////////////////////// fclose(file); FindClose(h); printf("検索終了\n"); int _c_ = getchar(); return 0; }
https://teratail.com/questions/287976 ← ?
すいません前回に質問は質問内容を編集してくださいとの指摘がありましたが
もう元の質問内容は覚えていないため修正できないため運営に削除リクエストをしました。そこで新しい質問を作成しました。
https://teratail.com/questions/287409
こちらは解決したのでしょうか?
解決してるのであれば、次々と質問する前に、過去に質問した事はクローズしてください。
回答4件
あなたの回答
tips
プレビュー