用C语言删除文本文件里的一行数据
时间: 2023-02-06 21:16:51 浏览: 1793
文本文件中删除某一行怎么实现
4星 · 用户满意度95%
在 C 语言中删除文本文件里的一行数据, 你需要打开文件并读取其中的内容, 然后找到要删除的行, 并将其从文件中删除. 一种方法是将文件的内容读取到一个字符串数组中, 在字符串数组中删除所需的行, 然后将更新后的字符串数组写回文件.
下面是一个简单的例子, 它展示了如何使用 C 语言删除文本文件中的一行:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define LINE_LEN 256
int main(int argc, char *argv[]) {
// 确保文件名和要删除的行号都已提供
if (argc < 3) {
fprintf(stderr, "Usage: %s filename line_number\n", argv[0]);
return 1;
}
// 打开文件
FILE *fp = fopen(argv[1], "r");
if (!fp) {
perror("Error opening file");
return 1;
}
// 读取文件的内容到字符串数组中
char **lines = NULL;
char line[LINE_LEN];
int line_count = 0;
while (fgets(line, LINE_LEN, fp)) {
lines = (char **)realloc(lines, sizeof(char *) * (line_count + 1));
lines[line_count] = (char *)malloc(strlen(line) + 1);
strcpy(lines[line_count], line);
line_count++;
}
// 关闭文件
fclose(fp);
// 将给定行从字符串数组中删除
int line_number = atoi(argv[2]);
if (line_number < 1 || line_number > line_count) {
fprintf(stderr, "Error: invalid line number\n");
return 1;
}
free(lines[line_number - 1]);
for (int i = line_number - 1; i < line_count - 1; i++) {
阅读全文