file.c ー ver.2

ちょいとここらで、ほとんど中身はないですがfile.cを更新しましたので、少し。

int file_make(char *filename, int overwrite)関数を作りました。
fileが存在してなければ作り、
存在してるとき、overwriteが1なら上書きして中身のないファイルにするものです。
#ifndef _FILE
#define _FILE

#include <stdio.h>
#include <string.h>

int file_exist(char *filename);
int file_make(char *filename, int overwrite);
int file_getsize(char *filename);
int file_gets(char *filename, char *s, int size);
int file_puts(char *filename, char *s, int size);

int file_exist(char *filename){
   FILE *fp = fopen(filename, "r");
   if(fp == NULL) return 0;
   fclose(fp);
   return 1;
}

// make file. if exist & overwrite, reset.
int file_make(char *filename, int overwrite){
   if(!overwrite && file_exist(filename)) return 0;
   FILE *fp = fopen(filename, "w");
   fclose(fp);
   return 1;
}

int file_getsize(char *filename){
   FILE *fp = fopen(filename, "r");
   if(fp == NULL) return -1;
   fseek(fp, 0, SEEK_END);
   int re = (int)ftell(fp);
   fclose(fp);
   return re;
}

int file_gets(char *filename, char *s, int size){
   int c, k = 0;
   FILE *fp = fopen(filename, "r");
   while(1){
      c = fgetc(fp);
      if(c == EOF || c == '\n' || size-- <= 1 ) break;
      s[k++] = (unsigned char)c;
   }
   s[k] = '\0';
   fclose(fp);
   if(strlen(s) == 0) return 0;
   else return 1;
}

int file_puts(char *filename, char *s, int size){
   int re = 1;
   FILE *fp = fopen(filename, "w");
   if(fwrite(s, sizeof(char), size, fp) <= 0) re = 0;
   fclose(fp);
   return re;
}

#endif
やってることはなんとも単純でした。