生成一个C语言简单文本文件行编辑代码
时间: 2024-03-10 07:49:37 浏览: 13
以下是一个简单的C语言文本文件行编辑代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_LENGTH 1024 // 定义最大行长
int main() {
char* input = (char*)malloc(MAX_LENGTH * sizeof(char)); // 动态分配输入缓冲区
memset(input, 0, MAX_LENGTH); // 清空输入缓冲区
printf("请输入文件名:\n");
fgets(input, MAX_LENGTH, stdin); // 从标准输入读取文件名
if(input[strlen(input) - 1] == '\n') { // 如果输入的最后一个字符是换行符
input[strlen(input) - 1] = '\0'; // 将换行符替换为字符串结束符
}
FILE* fp = fopen(input, "r+"); // 以可读写方式打开文件
if(fp == NULL) {
printf("文件打开失败!\n");
return 1;
}
printf("请输入要插入的行:\n");
fgets(input, MAX_LENGTH, stdin); // 从标准输入读取要插入的行
if(input[strlen(input) - 1] == '\n') { // 如果输入的最后一个字符是换行符
input[strlen(input) - 1] = '\0'; // 将换行符替换为字符串结束符
}
long pos = ftell(fp); // 获取当前文件指针位置
long size = 0; // 记录文件长度
char* buffer = NULL; // 动态分配缓冲区
fseek(fp, 0, SEEK_END); // 将文件指针移到文件尾
size = ftell(fp); // 获取文件长度
buffer = (char*)malloc(size + 1); // 动态分配缓冲区
memset(buffer, 0, size + 1); // 清空缓冲区
fseek(fp, 0, SEEK_SET); // 将文件指针移到文件头
fread(buffer, size, 1, fp); // 读取文件内容到缓冲区
fseek(fp, 0, SEEK_SET); // 将文件指针移到文件头
fwrite(input, strlen(input), 1, fp); // 写入新的一行
fwrite(buffer, size, 1, fp); // 写入原来的内容
fclose(fp); // 关闭文件
free(buffer); // 释放动态分配的内存
free(input); // 释放动态分配的内存
return 0;
}
```
该程序先从标准输入读取文件名,然后以可读写方式打开该文件。接着从标准输入读取要插入的行,并将该行插入到文件的最前面。最后关闭文件并释放动态分配的内存。