📅  最后修改于: 2023-12-03 15:00:13.167000             🧑  作者: Mango
本文将介绍一个C程序,可以读取一个文件并将其内容反转后打印出来。这个程序很简单,但是对于初学者来说可能会比较有用。
#include <stdio.h>
#include <stdlib.h>
#define BUFFER_SIZE 1024
int main()
{
char buffer[BUFFER_SIZE];
char* content;
long file_size;
FILE* file;
// 打开文件,获取文件大小
file = fopen("example.txt", "rb");
if (file == NULL)
{
printf("无法打开文件!\n");
exit(1);
}
fseek(file, 0, SEEK_END);
file_size = ftell(file);
rewind(file);
// 读取文件内容,存储到缓冲区中
content = malloc(file_size);
fread(content, 1, file_size, file);
fclose(file);
// 反转文件内容
for (int i = 0; i < file_size / 2; i++)
{
char temp = content[i];
content[i] = content[file_size - i - 1];
content[file_size - i - 1] = temp;
}
// 打印反转后的文件内容
printf("%.*s", file_size, content);
free(content);
return 0;
}
首先我们定义了一个缓冲区 buffer
以及一个指针 content
,用来存储文件内容。file_size
变量用来存储文件大小,file
指针用来访问文件。
char buffer[BUFFER_SIZE];
char* content;
long file_size;
FILE* file;
然后我们打开文件,用 fopen()
函数实现。如果文件打开失败则会打印错误信息并终止程序。
file = fopen("example.txt", "rb");
if (file == NULL)
{
printf("无法打开文件!\n");
exit(1);
}
接着我们通过 fseek()
和 ftell()
函数获取文件的大小,然后再将文件重置为文件起始位置。
fseek(file, 0, SEEK_END);
file_size = ftell(file);
rewind(file);
然后我们使用 malloc()
函数动态地为文件内容分配内存空间,再通过 fread()
函数将文件内容读入缓冲区。
content = malloc(file_size);
fread(content, 1, file_size, file);
fclose(file);
接下来我们就可以将缓冲区中的文件内容逆序。这里我们使用一个 for
循环,交换文件内容的前后字符。
for (int i = 0; i < file_size / 2; i++)
{
char temp = content[i];
content[i] = content[file_size - i - 1];
content[file_size - i - 1] = temp;
}
最后我们通过 printf()
函数将反转后的文件内容打印出来,并调用 free()
函数释放内存空间。
printf("%.*s", file_size, content);
free(content);
这个程序很简单,但是其背后的思路却不简单。通过这个程序,我们可以学习到很多基础知识,比如文件的读取、内存的分配以及指针的使用等等。对于初学者来说,这个程序或许可以作为一些练手的示例。