由于没有什么技术含量,故无注释,自行领悟
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int getFileLen(FILE* fp)
{
if (fp == NULL)
{
return -1;
}
char* buf = (char*)malloc(sizeof(char) * 1024);
int len = 0;
if (buf == NULL)
{
return -1;
}
while (fgets(buf, 1024, fp) != NULL)
{
len++;
}
fseek(fp, 0, SEEK_SET);
return len;
}
void readFileData(FILE* fp, int len, char** pArray)
{
if ((fp == NULL) || (len <= 0) || (pArray == NULL))
{
return;
}
char* buf = (char*)malloc(sizeof(char) * 1024);
memset(buf, 0, 1024);
if (buf == NULL)
{
return;
}
int pos = 0;
int bufLen = 0;
while (fgets(buf, 1024, fp) != NULL)
{
bufLen = strlen(buf) + 1;
char* temp = (char*)malloc(sizeof(char) * bufLen);
strcpy(temp, buf);
pArray[pos] = temp;
memset(buf, 0, 1024);
pos++;
}
}
void printFileData(char** pArray, int len)
{
if (pArray == NULL || len <= 0)
{
return;
}
for (int i = 0; i < len; i++)
{
printf("%s", pArray[i]);
}
}
void freeSpace(char** pArray, int len)
{
if (pArray == NULL)
return;
for (int i = 0; i < len; i++)
free(pArray[i]);
}
void readTest()
{
FILE* fp = fopen("C:/Users/Administrator/Desktop/test.txt", "r");
if (fp == NULL)
{
printf("Open Fail\n");
return;
}
int len = getFileLen(fp);
char** pArray = (char**)malloc(sizeof(char*) * len);
if (pArray == NULL)
{
return;
}
readFileData(fp, len, pArray);
printFileData(pArray, len);
freeSpace(pArray, len);
fclose(fp);
free(pArray);
fp = NULL;
pArray = NULL;
}
int main(void)
{
readTest();
return EXIT_SUCCESS;
}