读取文本
来源:互联网 发布:龙管家客户数据存在哪 编辑:程序博客网 时间:2024/05/22 09:54
#define _CRT_SECURE_NO_WARNINGS
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
char **readFile1(const char *pfilename/*in*/, int *lineNum/*in out*/)
{
int rv = 0;
FILE *fp = NULL;
char lineBuf[1024 * 4];
char **pTmp = NULL;
char *p = NULL;
int tmpLine = 0, strLine = 0, i = 0;
if (pfilename == NULL || lineNum == NULL)
{
rv = -1;
printf("readFile1() 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));
p = fgets(lineBuf, 1024 * 4, fp);
if (p == NULL)
{
break;
}
else
{
tmpLine++;
}
}
pTmp = (char **)malloc(tmpLine * sizeof(char *));
if (pTmp == NULL)
{
rv = -2;
printf("malloc() err. \n");
goto End;
}
//让文件指针指向文件的开头,目的:第二次从头检索
fseek(fp, 0L, SEEK_SET);
//
i = 0;
while (!feof(fp))
{
//读每一行
memset(lineBuf, 0, sizeof(lineBuf));
p = fgets(lineBuf, 1024 * 4, fp);
if (p == NULL)
{
break;
}
strLine = strlen(lineBuf);
pTmp[i] = (char *)malloc((strLine + 1) * sizeof(char));
if (pTmp[i] == NULL)
{
rv = -3;
printf("malloc() err. \n");
goto End;
}
strcpy(pTmp[i], lineBuf);
i++;
}
End:
if (fp != NULL)
{
fclose(fp);
}
//赋值
*lineNum = tmpLine;
return pTmp;
}
void FreeMypp(char **p, int linenum)
{
int i = 0;
if (p == NULL)
{
return NULL;
}
for (i = 0; i<linenum; i++)
{
if (p[i] != NULL)
{
free(p[i]);
}
}
free(p);
return;
}
void main()
{
char ** mypp = NULL;
const char *pfilename = "d:/1.txt";
int lineNum = 0, i = 0;
mypp = readFile1(pfilename/*in*/, &lineNum/*in out*/);
if (mypp == NULL)
{
return;
}
for (i = 0; i<lineNum; i++)
{
printf("%s\n", mypp[i]);
}
system("pause");
}
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
char **readFile1(const char *pfilename/*in*/, int *lineNum/*in out*/)
{
int rv = 0;
FILE *fp = NULL;
char lineBuf[1024 * 4];
char **pTmp = NULL;
char *p = NULL;
int tmpLine = 0, strLine = 0, i = 0;
if (pfilename == NULL || lineNum == NULL)
{
rv = -1;
printf("readFile1() 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));
p = fgets(lineBuf, 1024 * 4, fp);
if (p == NULL)
{
break;
}
else
{
tmpLine++;
}
}
pTmp = (char **)malloc(tmpLine * sizeof(char *));
if (pTmp == NULL)
{
rv = -2;
printf("malloc() err. \n");
goto End;
}
//让文件指针指向文件的开头,目的:第二次从头检索
fseek(fp, 0L, SEEK_SET);
//
i = 0;
while (!feof(fp))
{
//读每一行
memset(lineBuf, 0, sizeof(lineBuf));
p = fgets(lineBuf, 1024 * 4, fp);
if (p == NULL)
{
break;
}
strLine = strlen(lineBuf);
pTmp[i] = (char *)malloc((strLine + 1) * sizeof(char));
if (pTmp[i] == NULL)
{
rv = -3;
printf("malloc() err. \n");
goto End;
}
strcpy(pTmp[i], lineBuf);
i++;
}
End:
if (fp != NULL)
{
fclose(fp);
}
//赋值
*lineNum = tmpLine;
return pTmp;
}
void FreeMypp(char **p, int linenum)
{
int i = 0;
if (p == NULL)
{
return NULL;
}
for (i = 0; i<linenum; i++)
{
if (p[i] != NULL)
{
free(p[i]);
}
}
free(p);
return;
}
void main()
{
char ** mypp = NULL;
const char *pfilename = "d:/1.txt";
int lineNum = 0, i = 0;
mypp = readFile1(pfilename/*in*/, &lineNum/*in out*/);
if (mypp == NULL)
{
return;
}
for (i = 0; i<lineNum; i++)
{
printf("%s\n", mypp[i]);
}
system("pause");
}
阅读全文
0 0
- 读取文本
- 读取文本
- 读取文本
- 读取文本
- 读取文本
- 二进制读取文本
- Formscript 读取长文本
- ABAP读取长文本
- CStdioFileEx读取Unicode文本
- 读取订单长文本
- C# 读取excel文本
- C# 读取ppt文本
- C# 读取pdf文本
- java读取txt文本
- java读取 excel 文本
- java读取文本文档
- 读取文本、配置文件
- C++读取文本数据
- 服务计算——web扩展任务
- 软考——结束=开始
- Git 知识点总结(个人·常用)
- 梯度下降,牛顿法
- NOIP2017退役记
- 读取文本
- Gyroscope Larnging 001: Angle Momentum & Rotational Inertia
- Linux指令笔记
- 做好这几点思维上的转变,就能做好项目管理
- 51Nod 1091 线段的重叠 贪心
- windchill 11使用rehostUtility 3.0 进行环境克隆
- Angle and Squares UVA
- B
- 基于Unity3D的移动端摇一摇功能的实现