c语言下的文件操作函数
这段时间整理C语言的文件操作函数费了老大劲,太久没接触C语言,一开始写起来很不顺心,终于算是整理了一部分函数出来,可以告一段落了.
但是还有一点BUG,在对文件进行写入操作时,对于写入数据的长度如果大于写入字符串本身长度的话,这时候该文件的内容会多出一些莫名其妙的数据,希望遇到过此类问题的朋友告诉我原因.感激不尽!
以下是源码示例:
#include <stdio.h>
#include <stdlib.h>
//**************函数声明 *******************
int f_read(char *,long ,char * ,int);
/*
功能:读文件
参数:
char *filename 要读的文件地址
long pos 记录在文件中的偏移
char *sdata 保存所读数据地址
int len 要读取的数据长度
返回值:
读成功 0
其他错误 1
*/
int f_exist(char *);
/*
功能:判断文件是否存在
参数:
char *filename 要判断的文件名
返回值:
存在 0
不存在 1
*/
int f_write(char *,int ,long ,char *,int );
/*
功能:写文件
参数:
char *filename 要进行写操作的文件名
int mode 写模式
1 追加
0 改写
long pos 记录在文件中的偏移,对模式 1 无效
char *sdata 保存所读数据地址
int len 写入的数据长度
返回值:
写成功 0
其他错误 1
*/
//*******************函数定义 ***************
//入口函数
int main(int argc, char *argv[])
{
//step1: 判断文件是否存在 ? 0:存在 ; 1:不存在
int rel1=f_exist("ww.txt");
printf("file exist ? : %d/n",rel1);
char data[255]={' '}; //初始化字符串数组为空
//step2: 读取文件
f_read("ww.txt",0,data,255);
printf("read file : %s/n",data);
//step3: 写入文件
f_write("ww.txt",0,0,"This is a test file.",strlen("This is a test file."));
printf("after writing .../n");
//step4: 读取文件
f_read("ww.txt",0,data,255);
printf("read file : %s/n",data);
system("PAUSE");
return 0;
}
//写文件
int f_write(char *filename,int mode,long pos,char *sdata,int len)
{
FILE * fp ;
int i=0;
if(mode==0)
{
fp = fopen(filename, "wt");
while (i<len+pos)
{
if(i>=pos)
fputc(*sdata++,fp);
else
fputc(' ',fp);
i++;
}
}
else if(mode==1)
{
fp = fopen(filename, "at");
while (i<len)
{
fputc(*sdata++,fp);
i++;
}
}
else
{
return 1;
}
fclose(fp);
return 0;
}
//判断文件是否存在
int f_exist(char *filename)
{
FILE * fp = fopen(filename, "rb");
if (fp==NULL)
{
return 1;
}
else
{
fclose(fp);
return 0;
}
}
//读文件
int f_read(char *filename,long pos,char *sdata,int len)
{
FILE * fp = fopen(filename, "rt");
if(fp==NULL)
{
return 1;
}
char ch=fgetc(fp);
if(ch==EOF)
{
return 1;
}
int i=0;
while (i<len+pos)
{
if(i>=pos)
*sdata++=ch;
ch=fgetc(fp);
i++;
}
fclose(fp);
return 0;
}