- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- // 测试时使用的文件
- #define SRC_FILE_NAME (const char *)"test_a.txt"
- // 文件头预留64个字节
- #define FILE_HEADER_LEN 64
- /*==============================================================================
- 函 数 名 : GetFile
- 功 能 : 获取文件句柄
- 算法实现 : 无
- 参 数 : [in] const char *pFileName - 文件名
- 返 回 值 : 成功-得到的文件句柄,失败-NULL
- 日 期 : 2011/02/11
- 作 者 : jernymy
- ==============================================================================*/
- static FILE *GetFile(const char *pFileName)
- {
- // 使用rt+的方式打开文件
- FILE *fpSrc = fopen(pFileName, "rt+");
- if (NULL != fpSrc)
- {
- // 文件存在
- return fpSrc;
- }
- printf("open %s /"rt+/" fail, may be create first!/n", pFileName);
- // 创建文件
- fpSrc = fopen(pFileName, "wt");
- if (NULL != fpSrc)
- {
- // 文件创建成功
- printf("create %s /"wt/" succ, pointer:%p!/n", pFileName, fpSrc);
- }
- else
- {
- // 文件创建失败
- printf("create %s /"wt/" fail, pointer:%p!/n", pFileName, fpSrc);
- }
- return fpSrc;
- }
- /*==============================================================================
- 函 数 名 : WriteFile
- 功 能 : 写文件操作
- 算法实现 : 无
- 参 数 : [in] const char *pFileName - 文件名
- [in] const char *pchStr - 写入的字符串buffer
- 返 回 值 : 成功-0,失败--1
- 日 期 : 2011/02/11
- 作 者 : jernymy
- ==============================================================================*/
- static int WriteFile(const char *pFileName, const char *pchStr)
- {
- FILE *fpSrc = NULL;
- int nFileLen;
- if (NULL == pFileName)
- {
- printf("pFileName is NULL, exit!/n");
- return -1;
- }
- if (NULL == pchStr)
- {
- printf("pchStr is NULL, exit!/n");
- return -1;
- }
- fpSrc = GetFile(pFileName);
- if (NULL == fpSrc)
- {
- printf("get file fail! exit/n");
- return -1;
- }
- // 得到文件大小-文件长度
- fseek(fpSrc, 0L, SEEK_END);
- nFileLen = ftell(fpSrc);
- // 写文件头后面部分
- if (0 == nFileLen)
- {
- nFileLen = FILE_HEADER_LEN;
- }
- fseek(fpSrc, nFileLen, SEEK_SET);
- if (FILE_HEADER_LEN == nFileLen)
- {
- fprintf(fpSrc, "/n");
- }
- fprintf(fpSrc, "%s/n", pchStr);
- // 写文件头部分
- fseek(fpSrc, 0L, SEEK_END);
- nFileLen = ftell(fpSrc);
- fseek(fpSrc, 0L, SEEK_SET);
- fprintf(fpSrc, "File size:%09d", nFileLen);
- // 关闭文件
- if (NULL != fpSrc)
- {
- fclose(fpSrc);
- fpSrc = NULL;
- }
- return 0;
- }
- /*==============================================================================
- 函 数 名 : main
- 功 能 : 程序主函数
- 算法实现 : 无
- 参 数 : 无
- 返 回 值 : 成功-0,失败--1
- 日 期 : 2011/02/11
- 作 者 : jernymy
- ==============================================================================*/
- int main(void)
- {
- int nIdx;
- char achBuf[20] = {0};
- for (nIdx = 0; nIdx < 20; nIdx++)
- {
- sprintf(achBuf, "Index:%d%c", nIdx, 0);
- WriteFile(SRC_FILE_NAME, achBuf);
- }
- return 0;
- }