C语言读取文本文件最后一行重复读取问题

0x00 问题

C代码如下:

#include <stdio.h>
#include <stdlib.h>

void main(void)
{
   
   
        FILE *fp = NULL;
        fp = fopen("test.txt","r");
        if(fp==NULL)
        {
   
   
                
在C语言中,读取文本文件并逐行删除其实涉及到两个步骤:首先读取文件内容,然后处理每一行的内容(在这里删除)。以下是简单的示例: ```c #include <stdio.h> #include <stdlib.h> #define MAX_LINE_LENGTH 100 void delete_line(char *filename) { FILE *file = fopen(filename, "r+"); // 打开文件用于写 if (file == NULL) { perror("Failed to open file"); return; } char line[MAX_LINE_LENGTH]; size_t line_length; while (fgets(line, sizeof(line), file)) { // 逐行读取 line_length = strlen(line); if (line[line_length - 1] == '\n') { // 如果行尾有换行符,去掉它 line[--line_length] = '\0'; } printf("Before deletion: %s", line); // 可视化当前行 // 删除行的操作(这里只是一个打印,实际删除需要更复杂的文件操作) printf("\ndeleted: %s\n", line); // 在这里可以添加真正删除行的代码,例如向另一个文件写入,或直接修改原文件(注意原地修改可能会导致数据丢失) // fseek(file, -strlen(line), SEEK_CUR); // 移动到上一行开始位置(假设删除了这一行) // fprintf(file, "\n"); // 写回换行符填补空位 } rewind(file); // 将文件指针归位到开头 fclose(file); // 关闭文件 } int main() { char filename[] = "example.txt"; delete_line(filename); return 0; } ``` 这个例子中,我们打开文件并逐行读取,如果需要删除行,你可以选择将那一行写入一个新的文件,而不是简单地从内存中删除(因为这会导致原始数据丢失)。请注意,在实际操作中删除文件内容时,你需要确保正确处理可能出现的错误,并可能需要管理额外的内存。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值