- 论坛徽章:
- 0
|
当然,我不属于高手,都有4年没有写C了,所以,对C很陌生了,最近写了一个函数用来读取给定文件指针所指向文件的内容,当然是文本文件,然后用来读取没行文本,然后返回这个行的指针,当然,这里我用到的是动态大小建立在堆上面,所以,在使用的时候一定要用free作释放,不然会有内存泄露。把程序代码贴出来,显献丑,各位高手,斑竹,尽量执教批评,哈哈。只要不骂我就行。
char* freadline(FILE *fp){
size_t line_length=0;
size_t result;
char ch;
char *line_content;
int stop_mark_positoin=0;
while((result=fread(&ch,sizeof(char),1,fp))==1)
{
if(ch!='\n' && ch!='\r')
{
line_length+=result;
continue;
}
if(ch=='\r')
{
line_length+=result;
stop_mark_positoin++;
continue;
}
if(ch=='\n')
{
stop_mark_positoin++;
line_length+=1;
line_content=(char *)malloc(sizeof(char)*line_length);
fseek(fp,-line_length,SEEK_CUR);
fread(line_content,sizeof(char),line_length,fp);
line_content[line_length-stop_mark_positoin]='\0';
line_length=0;
stop_mark_positoin=0;
return line_content;
}
}
if(line_length>0)
{
line_content=(char *)malloc(sizeof(char)*line_length+1);
fseek(fp,-line_length,SEEK_CUR);
fread(line_content,sizeof(char),line_length,fp);
line_content[line_length]='\0';
return line_content;
}
return NULL;
}
[ 本帖最后由 lonelybugkv 于 2009-4-9 21:04 编辑 ] |
|