2016年2月8日月曜日

C言語でログ出力用ファイルのファイル名を自動的に更新する

C言語でログファイルを書き出す時にファイル名を自動更新するプログラム.例えばlog1.txt,log2.txt,…,logn.txtという感じで.概略を述べるとファイル名を設定し,ディレクトリを開いて同じ名前があれば数字を++して同じ名前がなければファイルを開くという流れです.

printf("\nOpen Log File\n");
FILE *fp;
char fname[512];
int n=0;
DIR *dir;
struct dirent *dp;
char dp1[512];
char path[512];
strcpy(path,".");

i=0;
while(i==0){
  if((dir=opendir(path))==NULL){
    perror("opendir");
    exit(1);
  }
  n+=1;
  //out put file name+++++++
  sprintf(fname,"log_%d.txt",n);
  for(dp=readdir(dir);dp!=NULL;dp=readdir(dir)){
    sprintf(dp1,"%s",dp->d_name);
    if(strcmp(dp1,fname)==0){//fname exists
      j=1;
    }
  }
  if(j!=1){
    i=1;
  }else{
    i=0;
  }
  j=0;
  closedir(dir);
}
if((fp=fopen(fname,"w"))==NULL){
  printf("%s\n",fname);
  perror("openfile");
  exit(1);
}
printf("\nOpened Log File\n");