实现按行读取文件,把内容按照第三种内存模型打包数据传出,把行数通过函数参数传出。
来源:互联网 发布:开微店还是开淘宝店好 编辑:程序博客网 时间:2024/09/21 09:04
/*
2 编写一个业务函数,实现按行读取文件。把内容按照第三种内存模型打包数据传出,把行数通过函数参数传出。
函数原型有两个,任意选择其一
要求1:请自己任意选择一个接口(函数),并实现功能;70分
要求2:编写测试用例。30分
要求3:自己编写内存释放函数
*/
/*********************************************************************** 版权所有 (C)2015, Wu Yingqiang。** 文件名称:ReadFile.c* 文件标识:无* 内容摘要:利用二级指针,按行读取文件* 其它说明:无* 当前版本: V1.0* 作 者: Wu Yingqiang* 完成日期: 20150112***********************************************************************/#define _CRT_SECURE_NO_WARNINGS#include "stdlib.h"#include "stdio.h"#include "string.h"#define LineMaxLen 1024*2 //每行最大的字符个数/*********************************************************************** 功能描述:将文件的内容读取到内存中* 输入参数:pfilename-文件名称,全路径;lineNum--文件的行数* 输出参数:lineNum--文件的行数* 返 回 值:文件内容在内存中的首地址* 其它说明:无* 修改日期 版本号 修改人 修改内容* -------------------------------------------------------------------* 20150112 V1.0 Wu Yingqiang 创建***********************************************************************/char **ReadFile(const char *pfilename/*in*/, int *lineNum/*in out*/){int rv = 0, tmplineNum = 0;FILE *fp = NULL;char lineBuf[LineMaxLen];char *pTmp = NULL;char **tmpFile = NULL;if (pfilename == NULL || lineNum == NULL){rv = -1;printf("ReadFile() err. param err \n");goto End;}fp = fopen(pfilename, "r");if (fp == NULL){rv = -2;printf("fopen() err. \n");goto End;}//第一遍读出多少行while (!feof(fp)){//读每一行memset(lineBuf, 0, sizeof(lineBuf));pTmp = fgets(lineBuf, LineMaxLen, fp);if (pTmp == NULL){continue;}else{tmplineNum++;}}tmpFile = (char **)malloc((tmplineNum + 1)*sizeof(char *));if (tmpFile == NULL){goto End;}//第二遍读内容//准备环境tmplineNum = 0;fseek(fp, 0L, SEEK_SET);while (!feof(fp)){//读每一行memset(lineBuf, 0, sizeof(lineBuf));pTmp = fgets(lineBuf, LineMaxLen, fp);if (pTmp == NULL){continue;}else{int tmplen = strlen(lineBuf);tmpFile[tmplineNum] = (char *)malloc((tmplen + 1)*sizeof(char));if (tmpFile[tmplineNum] == NULL){goto End;}strcpy(tmpFile[tmplineNum], lineBuf);//printf("%s", lineBuf);tmplineNum++;}}End:if (fp != NULL){fclose(fp);}*lineNum = tmplineNum;return tmpFile;}/*********************************************************************** 功能描述:释放文件内容在内存中的内存* 输入参数:p--文件内容在内存中的首地址,lineNUm--文件的行数* 输出参数:无* 返 回 值:无* 其它说明:无* 修改日期 版本号 修改人 修改内容* -------------------------------------------------------------------* 20150112 V1.0 Wu Yingqiang 创建***********************************************************************/void ReadFileFree(char **p, int lineNUm){int i = 0;if (p == NULL){return;}for (i = 0; i<lineNUm; i++){free(p[i]);}free(p);}/*********************************************************************** 功能描述:主函数* 输入参数:无* 输出参数:无* 返 回 值:无* 其它说明:无* 修改日期 版本号 修改人 修改内容* -------------------------------------------------------------------* 20150112 V1.0 Wu Yingqiang 创建***********************************************************************/void main(){char **p = NULL;const char *pfilename = "e:/1.txt";//E:\\1.txtint lineNum = 0, i = 0;p = ReadFile(pfilename/*in*/, &lineNum/*in out*/);if (p == NULL){return;}for (i = 0; i<lineNum; i++){printf("%s", p[i]);}ReadFileFree(p, lineNum);system("pause");}
0 0
- 编写一个业务函数,实现按行读取文件。把内容按照第三种内存模型打包数据传出,把行数通过函数参数传出。
- 实现按行读取文件,把内容按照第三种内存模型打包数据传出,把行数通过函数参数传出。
- c语言 实现按行读取文件。把内容按照第三种内存模型打包数据传出,把行数通过函数参数传出
- C++函数传出参数
- C++函数传出参数
- 函数的传出参数
- 函数传出参数,用指针作为函数的传出参数实现多值返回
- 通过指针的指针来实现传出参数
- 函数之传入参数,传出参数
- 函数的传入和传出参数
- springmvc 传出参数
- 传入传出参数
- 如何从后台子shell中把状态传出来
- 接收三个返回参数 考虑把三个串用逗号隔开,然后做为一个变量传出去.
- 函数返回多个值,传入参数和传出参数
- linux c 利用指针将函数传出参数的值
- 函数的指针参数传出时遇到的问题
- 使用二级指针传出参数
- 第329天(35W+5)
- AFNetWorking实现SOAP消息发送 ---Web Service
- Ganglia监控Hadoop集群的安装部署
- linux下进程与端口关系查找
- Bookmarks 2015-1-27
- 实现按行读取文件,把内容按照第三种内存模型打包数据传出,把行数通过函数参数传出。
- Loadrunner中吞吐量与带宽的换算
- Eclipse相关问题总结
- nginx开启status模块监控
- 韩顺平php视频笔记79 80 错误和异常处理的机制 错误处理器 错误触发器
- MFC单文档框架编程(一): 分隔窗口的实现
- 常用Linux命令合集
- MFC单文档框架编程(二): SDI框架下的消息处理
- MFC单文档框架编程(三): CTabView的使用