| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1763 人关注过本帖
标题:如何有规律性的删除一个文本文件中具有规律的某一行。
只看楼主 加入收藏
hxwj
Rank: 2
等 级:论坛游民
帖 子:75
专家分:34
注 册:2016-12-8
结帖率:57.14%
收藏
已结贴  问题点数:5 回复次数:4 
如何有规律性的删除一个文本文件中具有规律的某一行。
如何有规律性的删除一个文本文件中具有规律的某一行。
比如,文档A有如何行:
Asdfgdfgh
Bgfhf12
Cfg
Djjk
E12
F
G23
H233
删除文档中只有3个字符的所有行
Asdfgdfgh
Bgfhf12
Djjk
F
H233

[此贴子已经被作者于2019-11-21 21:03编辑过]

搜索更多相关主题的帖子: 一行 文本文件 文档 字符 删除 
2019-11-21 15:22
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9031
专家分:54061
注 册:2011-1-18
收藏
得分:3 
根据你上一个帖子 https://bbs.bccn.net/viewthread.php?tid=497921&page=1#pid2713318 简单改改就行了呀
若不肯举一反三,那作业的意义何在?

程序代码:
#include <stdio.h>
#include <stdbool.h>
#include <string.h>

bool insert_line_to( FILE* src, FILE* dst )
{
    for( bool bwrote=false; ; )
    {
        char buf[1024+1]; // 行缓冲,确保其不小于2
        char* p = fgets( buf, sizeof buf, src );
        if( !p )
        {
            if( bwrote )
            {
                if( dst )
                    fputc( '\n', dst );
                return true;
            }
            return false;
        }

        if( dst )
            fputs( buf, dst );
        bwrote = true;

        if( buf[strlen(buf)-1] == '\n' )
            return true;
    }
}


int main( void )
{
    FILE* fa = fopen( "a.txt", "r" );
    FILE* fb = fopen( "b.txt", "w" );

    for( size_t i=0; ; ++i )
    {
        bool bok = insert_line_to( fa, (i+3)%4==0 ? NULL : fb );
        if( !bok )
            break;
    }

    fclose( fb );
    fclose( fa );
}

2019-11-21 16:38
hxwj
Rank: 2
等 级:论坛游民
帖 子:75
专家分:34
注 册:2016-12-8
收藏
得分:0 
回复 2楼 rjsp
可能我没有把问题说明白
2019-11-21 21:04
纯蓝之刃
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:76
帖 子:570
专家分:3727
注 册:2019-7-29
收藏
得分:3 
程序代码:
#include <stdio.h>
#include <string.h>

int main(void)
{
    int n,i=0,j=0;
    char ch[100];
    FILE* fa=fopen("a.txt","r");
    FILE* fb=fopen("b.txt","w");

    printf("请输入需要删除的含有n个字符的行:");
    scanf("%d",&n);

    do
    {
        do
        {
            for(i=0;i<n;i++)
            {
                ch[i]=fgetc(fa);

                if(ch[i]=='\n'||ch[i]==EOF)
                {
                    for(j=0;j<=i;j++)
                        fprintf(fb,"%c",ch[j]);
                    if(ch[i]=='\n')
                    {
                        i=-1;
                        continue;
                    }
                    else
                        break;
                }
            }
            ch[n]=fgetc(fa);
        }while(ch[n]=='\n');
        for(j=0;j<=i;j++)
            fprintf(fb,"%c",ch[j]);
        while(1)
        {
            ch[0]=fgetc(fa);
            if(ch[0]!='\n'&&ch[0]!=EOF)
                fprintf(fb,"%c",ch[0]);
            else
                break;
        }
        if(ch[0]=='\n')
            fprintf(fb,"%c",ch[0]);
    }while(ch[0]!=EOF);

    fclose(fb);
    fclose(fa);

    remove("a.txt");
    rename("b.txt","a.txt");
}

一沙一世界,一花一天堂。无限掌中置,刹那成永恒。
2019-11-21 22:18
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9031
专家分:54061
注 册:2011-1-18
收藏
得分:0 
以下是引用hxwj在2019-11-21 21:04:31的发言:

可能我没有把问题说明白

你这叫没说明白?你这是把题目要求全换了呀:)
2019-11-21 23:43
快速回复:如何有规律性的删除一个文本文件中具有规律的某一行。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.863056 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved