C语言编写实现txt文件的逐行替换新输入的内容,给出具体的代码
时间: 2024-02-23 11:59:10 浏览: 135
实现文件内容替换的一段C语言源代码
4星 · 用户满意度95%
以下是一个简单的C语言程序,它可以逐行替换文本文件中的内容:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_LINE_LENGTH 1024
int main(int argc, char *argv[]) {
if (argc != 4) {
fprintf(stderr, "Usage: %s <filename> <old_text> <new_text>\n", argv[0]);
return EXIT_FAILURE;
}
char *filename = argv[1];
char *old_text = argv[2];
char *new_text = argv[3];
FILE *file = fopen(filename, "r");
if (file == NULL) {
fprintf(stderr, "Failed to open file: %s\n", filename);
return EXIT_FAILURE;
}
char line[MAX_LINE_LENGTH];
FILE *temp = tmpfile();
int found = 0;
while (fgets(line, MAX_LINE_LENGTH, file) != NULL) {
if (strstr(line, old_text) != NULL) {
found = 1;
char *new_line = strdup(line);
char *p = strstr(new_line, old_text);
strncpy(p, new_text, strlen(new_text));
fputs(new_line, temp);
free(new_line);
} else {
fputs(line, temp);
}
}
fclose(file);
if (!found) {
fprintf(stderr, "Failed to find text: %s\n", old_text);
return EXIT_FAILURE;
}
file = fopen(filename, "w");
if (file == NULL) {
fprintf(stderr, "Failed to open file: %s\n", filename);
return EXIT_FAILURE;
}
rewind(temp);
while (fgets(line, MAX_LINE_LENGTH, temp) != NULL) {
fputs(line, file);
}
fclose(file);
fclose(temp);
return EXIT_SUCCESS;
}
```
这个程序需要三个命令行参数:文件名,要替换的旧文本和新文本。它打开指定的文件并逐行读取。如果当前行包含旧文本,则创建一个新行,其中旧文本被替换为新文本,并将其写入临时文件中。否则,将当前行写入临时文件中。
完成所有行的操作后,它将关闭原始文件并重新打开它以进行写入。它将从临时文件中读取每一行,并将其写入原始文件中。最后,程序关闭原始文件和临时文件,并退出。
阅读全文