C语言打开用户指定文件,将文件内容倒序后再写入该文件
时间: 2024-04-30 11:19:06 浏览: 8
以下是一个简单的C语言程序,实现了打开用户指定文件,将文件内容倒序后再写回该文件的功能。具体实现方式是通过fseek和fread来实现文件内容的读取和写入,然后通过递归函数reverse来实现字符串的倒序。
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void reverse(char *str, int len)
{
if(len <= 1)
return;
char tmp = str[0];
str[0] = str[len-1];
str[len-1] = tmp;
reverse(str+1, len-2);
}
int main()
{
char filename[100];
printf("请输入要倒序的文件名:");
scanf("%s", filename);
FILE *fp = fopen(filename, "r+");
if(fp == NULL)
{
printf("文件打开失败!\n");
return 1;
}
fseek(fp, 0, SEEK_END);
int size = ftell(fp);
char *buf = (char*)malloc(size+1);
fseek(fp, 0, SEEK_SET);
fread(buf, 1, size, fp);
buf[size] = '\0';
reverse(buf, size);
fseek(fp, 0, SEEK_SET);
fwrite(buf, 1, size, fp);
fclose(fp);
free(buf);
printf("倒序完成!\n");
return 0;
}
```
这个程序首先通过fopen打开用户输入的文件,然后通过fseek和ftell获取文件大小,再通过malloc分配足够大的内存缓冲区,然后通过fread读取文件内容到缓冲区中。接着,通过递归函数reverse将缓冲区中的内容倒序,最后通过fwrite将倒序后的内容写回文件,完成倒序操作。注意,在使用完缓冲区后,需要通过free释放缓冲区的内存。