Cファイル操作簡易コード
1262 ワード
スタック上の割り当てメモリとスタック上の割り当てメモリ
この関数を頻繁に呼び出すと、メモリを動的に割り当てるのが面倒になる場合があります.手動で解放する必要があります.
static buf[BUF_LEN]で関数内またはグローバル変数配列を使用することも考えられますが、問題がまた発生しました.もしあなたのプログラムがデーモンであれば、必ずメモリを消費します.
グローバル変数を考慮してメモリが切れたら解放することもできます
この関数を頻繁に呼び出すと、メモリを動的に割り当てるのが面倒になる場合があります.手動で解放する必要があります.
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;
}