| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 505 人关注过本帖, 1 人收藏
标题:循环读取多个文件,读取每个文件有用的字符,一次存入新的文件。代码找不出 ...
取消只看楼主 加入收藏
ZMX900507
Rank: 1
等 级:新手上路
帖 子:71
专家分:0
注 册:2015-1-8
结帖率:55.56%
收藏(1)
已结贴  问题点数:20 回复次数:2 
循环读取多个文件,读取每个文件有用的字符,一次存入新的文件。代码找不出错误地方 求帮助
现在有 7 个文本文件 循环读取多个文件,读取每个文件有用的字符,一次存入新的文件
但是 存入新的文本文件时候最后一个文件可以存入,前面六个文件无法存入新的文件

其中一个文件的内容如下:
0001
0002
0011
0012
0101
0102
0111
1001
1002
1011
1012
1101
1102
1111
1112

#include<stdio.h>
#include <stdlib.h>
#include<string.h>
#define m 7
void main()
{
    FILE *fp,*fp1;
    int i,j=0,Individual=0,SNP=0,x;
    int a[20][10]={0};
    char b[300][100]={0};
    char mid,fname[20],finame[20];
    int c[100]={0};
    int d[20][10]={0};
    int f[200][100]={0};
    if((fp=fopen("fenkuailianjieqizhi.txt","r"))==NULL)/*确定每一个文本文件的起止字符*/
    {
        printf("cannot open this file\n");
        exit(0);
    }
    else
    {
        for(i=0;i<m;i++)
            for(j=0;j<2;j++)
                fscanf(fp,"%d",&a[i][j]);
            fclose(fp);
    }
    for(i=0;i<m;i++)
            for(j=0;j<2;j++)
                printf("%d  ",a[i][j]);
            printf("\n");

    if((fp=fopen("fenkuaituidaoqizhi.txt","r"))==NULL)
    {
        printf("cannot open this file\n");
        exit(0);
    }
    else
    {
        for(i=0;i<m;i++)
            for(j=0;j<2;j++)
                fscanf(fp,"%d",&d[i][j]);
            fclose(fp);
    }   
    for(i=0;i<m;i++)
            for(j=0;j<2;j++)
                printf("%d  ",d[i][j]);
            printf("\n");
    for(i=1;i<=m;i++)/*确定每个文本文件有多少行*/
    {
        Individual=0;
        sprintf(fname, "hap%d.txt", i);
        if((fp=fopen(fname,"r+"))==NULL)
        {
            printf("Can not open the file!\n");
        }
        while(!feof(fp))
        {
            mid=fgetc(fp);
            if(mid=='\n')
                Individual++;
        }
        c[i-1]=Individual;
    }
    for(i=1;i<=m;i++)
        printf("%d\t",c[i-1]);
    printf("\n");
    for(i=1;i<=m;i++)
    {
        //char b[300][100]={0};
        sprintf(fname, "hap%d.txt", i);
        if ((fp = fopen(fname,"r"))==NULL)/*将每个文本文件的内容赋给数组*/
        {
            printf("cannot open this file\n");
            exit(0);
        }
        else
        {
            for(x=0;x<c[i-1];x++)
                for(j=0;j<a[i-1][1]-a[i-1][0]+2;j++)
                    fscanf(fp,"%c",&b[x][j]);
            fclose(fp);
        //}
        for(x=0;x<c[i-1];x++)
        {
            for(j=0;j<a[i-1][1]-a[i-1][0]+1;j++)
                printf("%c",b[x][j]);
            //    printf("\n");
        }

        sprintf(finame, "ha%d.txt", i);/*把有用的字符写入新的文本文件*/
        if ((fp1= fopen(finame,"w"))==NULL)
        {
            printf("the file can not open..");
        }
        for(x=0;x<c[i-1];x++)
        {
            for(j=0;j<a[i-1][1]-a[i][0]+1;j++)
                fprintf(fp1,"%c",b[x][j]);
                fputc('\n', fp1);
        }

        fclose(fp1);
        }
    }
   
        /*if ((fp = fopen("hap2.txt","r"))==NULL)
        {
            printf("cannot open this file\n");
            exit(0);
        }
        else
        {
            for(i=0;i<8;i++)
                for(j=0;j<4;j++)
                    fscanf(fp,"%c",&b[i][j]);
            fclose(fp);
        }
        for(i=0;i<8;i++){
            for(j=0;j<3;j++)
                    printf("%c",b[i][j]);
                    printf("\n");}*/
}
搜索更多相关主题的帖子: 文本文件 include 
2015-01-08 19:20
ZMX900507
Rank: 1
等 级:新手上路
帖 子:71
专家分:0
注 册:2015-1-8
收藏
得分:0 
回复 2楼 tlliqi
是自己写的,刚刚找到错误的地方了  i-1  写成i 了  谢谢!
2015-01-09 10:37
ZMX900507
Rank: 1
等 级:新手上路
帖 子:71
专家分:0
注 册:2015-1-8
收藏
得分:0 
回复 3楼 TonyDeng
就是读取7个连续的文本文件(从hap1-hap7,里面存的是字符串) 将每个文件中有用的字符串存到新的文件中,
昨晚上改了个地方 可以运行了
谢谢!
#include<stdio.h>
#include <stdlib.h>
#include<string.h>
#define m 7
void main()
{
    FILE *fp,*fp1;
    int i,j=0,Individual=0,SNP=0,x;
    int a[20][10]={0};
    char b[300][100]={0};
    char mid,fname[20],finame[20];
    int c[100]={0};
    int d[20][10]={0};
    int f[200][100]={0};
    if((fp=fopen("fenkuailianjieqizhi.txt","r"))==NULL)/*确定每一个文本文件的起止字符*/
    {
        printf("cannot open this file\n");
        exit(0);
    }
    else
    {
        for(i=0;i<m;i++)
            for(j=0;j<2;j++)
                fscanf(fp,"%d",&a[i][j]);
            fclose(fp);
    }
    for(i=0;i<m;i++)
            for(j=0;j<2;j++)
                printf("%d  ",a[i][j]);
            printf("\n");

    if((fp=fopen("fenkuaituidaoqizhi.txt","r"))==NULL)
    {
        printf("cannot open this file\n");
        exit(0);
    }
    else
    {
        for(i=0;i<m;i++)
            for(j=0;j<2;j++)
                fscanf(fp,"%d",&d[i][j]);
            fclose(fp);
    }   
    for(i=0;i<m;i++)
            for(j=0;j<2;j++)
                printf("%d  ",d[i][j]);
            printf("\n");
    for(i=1;i<=m;i++)/*确定每个文本文件有多少行*/
    {
        Individual=0;
        sprintf(fname, "hap%d.txt", i);
        if((fp=fopen(fname,"r+"))==NULL)
        {
            printf("Can not open the file!\n");
        }
        while(!feof(fp))
        {
            mid=fgetc(fp);
            if(mid=='\n')
                Individual++;
        }
        c[i-1]=Individual;
    }
    for(i=1;i<=m;i++)
        printf("%d\t",c[i-1]);
    printf("\n");
    for(i=1;i<=m;i++)
    {
        char b[300][100]={0};
        sprintf(fname, "hap%d.txt", i);
        if ((fp = fopen(fname,"r"))==NULL)/*将每个文本文件的内容赋给数组*/
        {
            printf("cannot open this file\n");
            exit(0);
        }
        else
        {
            for(x=0;x<c[i-1];x++)
                for(j=0;j<d[i-1][1]-d[i-1][0]+2;j++)
                    fscanf(fp,"%c",&b[x][j]);
            fclose(fp);
            for(x=0;x<c[i-1];x++)
            {
                for(j=0;j<d[i-1][1]-d[i-1][0]+2;j++)
                    printf("%c",b[x][j]);
            }

            sprintf(finame, "ha%d.txt", i);/*把有用的字符写入新的文本文件*/
            if ((fp1= fopen(finame,"w"))==NULL)
            {
                printf("the file can not open..");
            }
            for(x=0;x<c[i-1];x++)
            {
                for(j=0;j<a[i-1][1]-a[i-1][0]+1;j++)
                {
                    fprintf(fp1,"%c",b[x][j]);
                    
                }
                fputc('\n', fp1);
            }

            fclose(fp1);
        }
    }
}
2015-01-09 10:42
快速回复:循环读取多个文件,读取每个文件有用的字符,一次存入新的文件。代码找 ...
数据加载中...
 
   



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

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