用c++语言写一个删除txt文件前20行内容的程序
时间: 2023-08-31 15:21:39 浏览: 236
### 回答1:
可以使用以下程序:#include <stdio.h>
#include <stdlib.h>int main()
{
char filename[256];
int i; printf("输入txt文件名:");
scanf("%s", filename); FILE *fp = fopen(filename, "r");
FILE *fp2 = fopen("output.txt", "w"); for (i=0; i<20; i++) {
fgets(filename, sizeof(filename), fp);
} while (!feof(fp)) {
fprintf(fp2, "%s", filename);
fgets(filename, sizeof(filename), fp);
} fclose(fp);
fclose(fp2); return 0;
}
### 回答2:
使用C语言编写删除txt文件前20行内容的程序,可以分为以下步骤:
1. 首先,需要包含相关的头文件和定义必要的变量。头文件包括stdio.h和stdlib.h,定义一个文件指针和一个字符数组。
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_LENGTH 1000 // 假设每行最多1000个字符
```
2. 创建一个新函数,用于删除txt文件前20行内容。该函数需要传入文件名作为参数。
```c
void deleteLines(char* filename) {
// 打开原始txt文件
FILE* file = fopen(filename, "r");
if (file == NULL) {
printf("无法打开文件!\n");
return;
}
// 创建一个临时文件来保存剩下的内容
FILE* temp = fopen("temp.txt", "w");
if (temp == NULL) {
printf("无法创建临时文件!\n");
return;
}
char line[MAX_LENGTH];
int count = 0;
// 读取并删除前20行内容
while (fgets(line, MAX_LENGTH, file) != NULL) {
count++;
if (count <= 20) {
continue;
}
fputs(line, temp);
}
// 关闭原始txt文件和临时文件
fclose(file);
fclose(temp);
// 删除原始txt文件
remove(filename);
// 重命名临时文件为原始txt文件
rename("temp.txt", filename);
printf("已成功删除txt文件前20行内容!\n");
}
```
3. 在主函数中调用该函数,并传入txt文件名作为参数。
```c
int main() {
char filename[100];
printf("请输入txt文件名:");
scanf("%s", filename);
deleteLines(filename);
return 0;
}
```
以上是一个简单的用于删除txt文件前20行内容的C语言程序。注意,该程序会打开一个临时文件来保存剩下的内容,然后删除原始txt文件,最后将临时文件重命名为原始txt文件。为了保证程序的正确性,请确保输入的文件名是存在的。
### 回答3:
#include <stdio.h>
#include <stdlib.h>
int main() {
FILE *file;
char filename[100];
char tempFilename[100];
int count = 0;
int ch;
printf("请输入要删除前20行内容的txt文件名:");
scanf("%s", filename);
// 打开源文件
file = fopen(filename, "r");
if (file == NULL) {
printf("无法打开文件!\n");
exit(1);
}
// 打开临时文件用于保存删除后的内容
sprintf(tempFilename, "temp_%s", filename);
FILE *tempFile = fopen(tempFilename, "w");
if (tempFile == NULL) {
printf("无法创建临时文件!\n");
fclose(file);
exit(1);
}
// 读取并删除前20行内容
while ((ch = fgetc(file)) != EOF) {
if (count < 20) {
if (ch == '\n') {
count++;
}
} else {
fputc(ch, tempFile);
}
}
// 关闭文件
fclose(file);
fclose(tempFile);
// 删除源文件并重命名临时文件为源文件名
remove(filename);
rename(tempFilename, filename);
printf("成功删除前20行内容!\n");
return 0;
}
阅读全文