#概要
コメントでアドバイスをもらったやり方が一番よさそうだったのでそっち参考にしてください
めっちゃ放置しててすいません
少し気になったので指定したフォルダ内のファイル数とファイル名を取得するプログラムを書きました。
ファイル名は二次元の動的配列に格納されます。
chdirに調べたいフォルダを指定してください(プログラムと同じ階層の場合はコメントアウトしてください)
~~Windows専用です(Systemのところの命令変えたらLinuxでも多分できる())==
※tmp.txtを一時的に生成して削除するのでプログラムと同じ階層にtmp.txtがある場合はプログラム内のファイル名を適当なのに変えてください。
多分もっといい方法あると思うので、よければ教えてくださるとありがたいです...
書いてるときに疲れてるから文章が堅い...((((((
#ソース
#include<stdio.h>
#include<string.h>
int main(){
char **file_name;
int i,len,file_num=0;
char input[128];
FILE *fp;
//■■■■■■■■■■■■■■■■■■■■■■■■■■■
//調べるフォルダ名
chdir("a");
system("dir /B > ../tmp.txt");
chdir("../");
fp=fopen("tmp.txt","r");
while(fgets(input,64,fp)!=NULL){
file_num++;
}
fseek(fp,0,SEEK_SET);
file_name = (char**)malloc(sizeof(char*)*file_num);
for(i=0;i<file_num;i++){
fgets(input,64,fp);
len=strlen(input);
file_name[i]=(char *)malloc(sizeof(char)*len);
sprintf(file_name[i],"%s",input);
}
fclose(fp);
remove("tmp.txt");
//■■■■■■■■■■■■■■■■■■■■■■■■■■■
//表示
printf("ファイル数:%d\n",file_num);
for(i=0;i<file_num;i++){
printf("%s\n",file_name[i]);
}
//解放
for(i=0;i<file_num;i++){
free(file_name[i]);
}
free(file_name);
return 0;
}