首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

请大家帮忙看一个写文件的函数

2012-03-14 
求教:请大家帮忙看一个写文件的函数有这么一个函数C/C++ codebool getFile(const char *inputFileName){FI

求教:请大家帮忙看一个写文件的函数
有这么一个函数

C/C++ code
bool getFile(const char *inputFileName){    FILE *fd,*fin;    nal_reader_t nal;    uint8_t *nal_buffer;    uint32_t nal_buffer_size, nal_buffer_size_max;    fd=NULL;    nal_buffer=NULL;    nal_buffer_size = 0;    nal_buffer_size_max = 0;    memset(&nal, 0, sizeof(nal));    if((fd=ReadFile(inputFileName))==NULL)    {        fprintf(stderr,  "%s: can't open file %s: %s\n",ProgName, inputFileName, strerror(errno));        return false;    }    fin=fopen("test1.temp","wb");    if(!fin)    {            fprintf(stderr,  "%s: can't open file %s: %s\n",ProgName, inputFileName, strerror(errno));            return false;            }        nal.ifile=fd;        while(LoadNal(&nal) != false)        {            uint32_t header_size;            header_size = nal.buffer[2] == 1 ? 3 : 4;            uint32_t to_write;            to_write = nal.buffer_on;            if (to_write + 4 + nal_buffer_size > nal_buffer_size_max)             {                nal_buffer_size_max += nal.buffer_on + 4;                nal_buffer = (uint8_t *)realloc(nal_buffer, nal_buffer_size_max);            }            memcpy(nal_buffer + nal_buffer_size + 4,nal.buffer + header_size,to_write);            nal_buffer_size += to_write + 4;            if(fwrite(nal_buffer,1,nal_buffer_size,fin))            {                printf("写入文件成功\n");            }        }        return true;}

loadNal函数用于读取文件内容(文件是由很多个Nal单元组成的,每个nal单元的起始字符相同)
其中nal_reader_t nal是一个结构体,用于读取文件时记录一些参数。定义如下:
C/C++ code
typedef struct nal_reader_t {  FILE *ifile;  uint8_t *buffer;  uint32_t buffer_on;  uint32_t buffer_size;  uint32_t buffer_size_max;} nal_reader_t;

因为所读取的文件内容是二进制的,由很多个小的单元组成,每个单元的开头以相同的起始码标记,我想实现的功能是将文件内容以单元为单位读取出来,经过修改后写入到一个新的文件中,但是上面的代码在执行时可以读取到每个单元的内容,但是在写入文件时会输出写入文件成功的标记,文件中没有内容。请大家帮忙看看是什么原因,谢谢大家

[解决办法]
fwrite(nal_buffer,1,nal_buffer_size,fin)之后要fclose,这样才能将写好的文件保存起来,才会有内容

热点排行