Cファイル操作簡易コード

1262 ワード

スタック上の割り当てメモリとスタック上の割り当てメモリ
この関数を頻繁に呼び出すと、メモリを動的に割り当てるのが面倒になる場合があります.手動で解放する必要があります.
static buf[BUF_LEN]で関数内またはグローバル変数配列を使用することも考えられますが、問題がまた発生しました.もしあなたのプログラムがデーモンであれば、必ずメモリを消費します.
グローバル変数を考慮してメモリが切れたら解放することもできます
#include 
#include 
#include 
#include 

#define EXIT exit(-1)
#define BUF_LEN (512)

void readFile(const char* fileName,char* out)
{
    FILE* fp;
    if(NULL == fileName) {
	printf("error fileName.
"); EXIT; } if(0 != (access(fileName,F_OK))) { printf("this file is not exsit.
"); EXIT; } if(NULL == (fp= fopen(fileName,"r"))) { printf("open fileName fail.
"); EXIT; } if(fread(out,1,BUF_LEN,fp) < 1) { printf("read %s file error.
",fileName); EXIT; } } int main() { char out[BUF_LEN]={0}; char* buf; /* examples 1 */ readFile("/opt/test",out); printf("%s
",out); /* examples 2 */ buf = (char*)malloc(sizeof(char)*BUF_LEN); memset(buf,'\0',sizeof(char)*BUF_LEN); readFile("/opt/test",buf); printf("%s
",buf); free(buf); return 0; }