【C语言】C语言读取文本文件

日博365.tv ⌛ 2025-07-02 04:00:46 👤 admin 👁️ 9930 ❤️ 776
【C语言】C语言读取文本文件

文章目录

【C语言】C语言读取文本文件一 前言二 按字符读取文本文件1、程序实现一2、程序实现二3、以西游记为海量文本进行测试

三、按行读取文本文件1、程序实现一2、程序实现二

四、说明

【C语言】C语言读取文本文件

一 前言

时不时牵扯到做处理文件,然后就要读取文本,每次都要重新写,这里就做一个记录,方便以后用到,就直接复制粘贴就ok。

二 按字符读取文本文件

1、程序实现一

1:代码

/*

程序功能:分别按照字符,行标识读取文本文件

*/

// 一、按照字符读取文本文件

#include

int fileHang(FILE *fp);

int main(int argc, char *argv[])

{

int flag;

char ch;

char *f1 = argv[1]; // 后台参数

FILE *fp1 = fopen(f1, "r"); // 创建文件指针及打开文本文件

if(fp1 == NULL){

printf("文件 %s 打开时发生错误", f1);

return -1;

}

while((ch=fgetc(fp1)) != EOF){

// putchar(ch);

printf("%c",ch);

}

// fileHang(fp1);

fclose(fp1);

return 0;

}

2:结果

2、程序实现二

1:代码

/*

程序功能:分别按照字符,行标识读取文本文件

*/

// 一、按照字符读取文本文件

#include

int fileHang(FILE *fp);

int main(int argc, char *argv[])

{

char *f1 = argv[1]; // 后台参数

FILE *fp1 = fopen(f1, "r"); // 创建文件指针及打开文本文件

if (fp1 == NULL)

{

printf("文件 %s 打开时发生错误", f1);

return -1;

}

fileHang(fp1); // 调用自定义函数

fclose(fp1); // 关闭文件指针

return 0;

}

// 创建子函数

int fileHang(FILE *fp1)

{

int lines = 1;

char ch;

while ((ch = fgetc(fp1)) != EOF)// 读取到文件末尾或读取失败时返回 EOF

{

if (ch == '\n')

{

lines++;

}

// putchar(ch);

printf("%c", ch);

}

printf("\n 一共 %d 行",lines);

return 1;

}

2:结果

3、以西游记为海量文本进行测试

1:代码

/*

程序功能:分别按照字符,行标识读取文本文件

*/

// 一、按照字符读取文本文件

#include

#include

int fileHang(FILE *fp);

int main(int argc, char *argv[])

{

clock_t start,finish;

double duration;

char *f1 = argv[1]; // 后台参数

FILE *fp1 = fopen(f1, "r"); // 创建文件指针及打开文本文件

start = clock();

if (fp1 == NULL)

{

printf("文件 %s 打开时发生错误", f1);

return -1;

}

fileHang(fp1); // 调用自定义函数

fclose(fp1); // 关闭文件指针

finish = clock();

duration = (double)(finish - start) / CLOCKS_PER_SEC;

printf("\n一共耗时 %f 秒",duration);

return 0;

}

// 创建子函数

int fileHang(FILE *fp1)

{

int lines = 1;

char ch;

while ((ch = fgetc(fp1)) != EOF)// 读取到文件末尾或读取失败时返回 EOF

{

if (ch == '\n')

{

lines++;

}

// putchar(ch);

printf("%c", ch);

}

printf("\n 一共 %d 行",lines);

return 1;

}

2:结果

三、按行读取文本文件

1、程序实现一

1:代码

/*

程序功能:分别按照字符,行标识读取文本文件

*/

// 二、按照行读取文本文件

#include

#include

#define MAX 1024

int fileHang(FILE *fp);

int main(int argc, char *argv[])

{

char line[MAX];

int lines = 0;

char *f1 = argv[1]; // 后台参数

FILE *fp1 = fopen(f1, "r"); // 创建文件指针及打开文本文件

if (fp1 == NULL)

{

printf("文件 %s 打开时发生错误", f1);

exit(1);

}

while(fgets(line,MAX,fp1) != NULL){

// 或者,使用whie(!feof(fp1)){fgets(line,MAX,fp1)}

lines++; // 统计行数

printf(line);// 打印文本

}

// fileHang(fp1); // 调用自定义函数

printf("\n一共 %d 行",lines);

fclose(fp1); // 关闭文件指针

return 0;

}

2:结果

2、程序实现二

1:程序

/*

程序功能:分别按照字符,行标识读取文本文件

*/

// 二、按照行读取文本文件

#include

#include

#define MAX 1024

int fileHang(FILE *fp);

int main(int argc, char *argv[])

{

char line[MAX];

int lines = 0;

char *f1 = argv[1]; // 后台参数

FILE *fp1 = fopen(f1, "r"); // 创建文件指针及打开文本文件

if (fp1 == NULL)

{

printf("文件 %s 打开时发生错误", f1);

exit(1);

}

fileHang(fp1); // 调用自定义函数

fclose(fp1); // 关闭文件指针

return 0;

}

// 创建子函数

int fileHang(FILE *fp1)

{

int lines = 0;

char line[MAX];

while (fgets(line, MAX, fp1) != NULL)

{

lines++; // 统计行数

printf(line); // 打印文本

}

printf("\n 一共 %d 行", lines);

return 1;

}

2:结果

四、说明

以上的程序实现一和实现二其本质上是一样的,区别就是实现二是将代码封装了起来。

相关文章

友情链接