| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 823 人关注过本帖, 1 人收藏
标题:多个文件的链接问题
只看楼主 加入收藏
ZMX900507
Rank: 1
等 级:新手上路
帖 子:71
专家分:0
注 册:2015-1-8
结帖率:55.56%
收藏(1)
已结贴  问题点数:10 回复次数:18 
多个文件的链接问题
现有7个文本文件(ha1-7 里面存放的是字符型数据,每个文件的行数不一样,7个文件的字符长度也不一样,但是每个文件内部每一行的长度是一定的),对应另外7个文件(f1-7 此文件存放的是ha1-7文件中每行对应的频率) 还有一个文本文件(fenkuailianjieqizhi.txt) 存放的是ha1-7文件每一行字符的的长度。现在想把两两个文件中频率乘积大与q的字符两接到一起,最后连接成一个长字符
以下是我编写的代码但是满是错误   麻烦大家指点
#include<stdio.h>
#include<math.h>
#include <stdlib.h>
#include<time.h>
#include<string.h>
#define m 7
#define q 0.03
void main()
{
    FILE *fp,*fp1;
    int i,j=0,Individual=0,SNP=0,x,t,n;
    int a[100][5]={0};
    char str1[500][100]={0};
    char str2[500][500]={0};
    char mid,fname[20],finame[20];
    int fr[500]={0},fr1[500]={0},b[500]={0},c[100]={0};
    //int
    //int
    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=1;i<=m;i++)/*确定每个文本文件有多少行*/
    {
        Individual=0;
        sprintf(fname, "ha%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");
    if ((fp = fopen("ha1.txt","r"))==NULL)/*将每个文本文件的内容赋给数组*/
        {
            printf("cannot open this file\n");
            exit(0);
        }
    else
    {
        for(i=0;i<c[0];i++)
            for(j=0;j<a[0][1]-a[0][0]+2;j++)
                fscanf(fp,"%c",&str1[i][j]);
            fclose(fp);
    }
    for(i=0;i<c[0];i++)
    {
        for(j=0;j<a[0][1]-a[0][0]+1;j++)
            printf("%c",str1[i][j]);
            printf("\n");
    }
    if ((fp = fopen("f1.txt","r"))==NULL)
    {
        printf("cannot open this file\n");
        exit(0);
    }
    else
    {
        for(i=0;i<c[0];i++)
            fscanf(fp,"%d",&fr[i]);
        fclose(fp);
    }
    for(i=0;i<c[0];i++)
            printf("%d",fr[i]);
    t=c[0];

    for(i=2;i<=m;i++)
    {
        sprintf(fname, "ha%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]+1;j++)
                    fscanf(fp,"%c",&str2[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",str2[x][j]);
                printf("\n");
            }
            sprintf(fname, "f%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++)
                    fscanf(fp,"%d",&fr1[x]);
                fclose(fp);
            }
            for(x=0;x<t;x++)
            {
                for(j=0;j<c[i-1];j++)
                {
                    if(fr[x]*fr1[j]>q)/* 这地方不会编了    */
                    {
                        for(n=0;n<a[i-1][1]-a[i-1][0]+1;n++){
                        while (str1[x][n] !='\n')
                        while (str2[j][n] !='\n')
                            str1[x][n]=str2[j][n]; }      
                        //str1[x][j] ='\0';}
                    }
                }
            }
        }
    }
}
搜索更多相关主题的帖子: 文本文件 include 
2015-01-09 15:21
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:2 
你这种问题  最好能把原始数据文件 放出来  否则没得帮

DO IT YOURSELF !
2015-01-09 15:28
ZMX900507
Rank: 1
等 级:新手上路
帖 子:71
专家分:0
注 册:2015-1-8
收藏
得分:0 
回复 2楼 wp231957
ha1数据如下
0001
0002
0011
0012
0101
0102
0111
1001
1002
1011
1012
1101
1102
1111
1112
ha2 数据如下
00
00
01
01
10
10
11
11
ha3 数据如下
1
1
2
2
ha4 数据如下
11
11
11
12
12
12
21
21
22
22
22
22
f1 数据如下
0.549653
0.216120
0.101893
0.001619
0.006398
0.000031
0.000062
0.025851
0.004410
0.004058
0.000124
0.023693
0.012353
0.052367
0.001368
f2 数据如下
0.640790
0.244303
0.001738
0.001368
0.001736
0.001369
0.094866
0.013829
f3 数据如下
0.614748
0.124383
0.143016
0.117853
f4 数据如下
0.669543
0.055830
0.000031
0.003893
0.019119
0.009348
0.003665
0.019379
0.008075
0.000745
0.040757
0.169616
fenkuailianjieqizhi.txt数据如下
1    4(两数相减加1 是ha1 文件每行字符的长度)
5    6
7    7
8    9
谢谢!


2015-01-09 15:46
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:2 
不知道你最后文件的1、5、7、8是怎么来的

授人以渔,不授人以鱼。
2015-01-09 19:34
ZMX900507
Rank: 1
等 级:新手上路
帖 子:71
专家分:0
注 册:2015-1-8
收藏
得分:0 
回复 4楼 TonyDeng
是横着看的
4-1+1=4是ha1文件每个字符的长度
6-5+1=2是ha2文件每个字符的长度
7-7+1=1是ha3文件每个字符的长度
9-8+1=2是ha4文件每个字符的长度
2015-01-09 19:38
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
4-1+1=4
右边是4,不用计算也知道,我问你的是左边4和1怎么来的。直接就能数出来的4需要计算吗?4-1+1等于4,4-2+2也等于4,你需要解释清楚左边的运算公式是怎么回事、跟文件中是数据有什么关系。

授人以渔,不授人以鱼。
2015-01-09 19:43
ZMX900507
Rank: 1
等 级:新手上路
帖 子:71
专家分:0
注 册:2015-1-8
收藏
得分:0 
回复 6楼 TonyDeng
我这是研究的生物信息学,1 4 表示的是ha1文件中存的是第一到第四个基因位点,也就是说ha1 文件每一行存的是4个字符
5 6表示的是ha2文件中存的是第5到第6个基因位点,也就是说ha1 文件每一行存的是2个字符
依次类推
谢谢!
2015-01-09 19:51
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
你早说得出1~4、5~6、7~7、8~9分别是区间上的端点,这程序已经能够很清晰地写出来啦。看你的口气,好像不耐烦了,那就等着谁给你做吧。

授人以渔,不授人以鱼。
2015-01-09 19:58
ZMX900507
Rank: 1
等 级:新手上路
帖 子:71
专家分:0
注 册:2015-1-8
收藏
得分:0 
回复 6楼 TonyDeng
我研究生物是生物信息学,  1  4 表示ha1文件存放的是基因的第1到第4个位点,也就是ha1文件的每一行都是4个字符
5  6 表示ha2文件存放的是基因的第5到第6个位点,也就是ha2文件的每一行都是2个字符
7 7 表示ha3文件存放的是基因的第7到第7个位点,也就是ha3文件的每一行都是1个字符
依次类推
我刚刚改的程序如下:
/*字符连接。。。。。。*/那地方怎么都不对
谢谢你帮助!


#include<stdio.h>
#include<math.h>
#include <stdlib.h>
#include<time.h>
#include<string.h>
#define m 2
#define q 0.05
void main()
{
    FILE *fp,*fp1;
    int i,j=0,Individual=0,SNP=0,x,t,n,k,p;
    int a[100][5]={0};
    char str1[500][100]={0};
    char str2[500][500]={0};
    char mid,fname[20],finame[20];
    double fr[500]={0},fr1[500]={0},fr2[500]={0};
    int b[500]={0},c[100]={0};
    //int
    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=1;i<=m;i++)/*确定每个文本文件有多少行*/
    {
        Individual=0;
        sprintf(fname, "ha%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");
    if ((fp = fopen("ha1.txt","r"))==NULL)/*将每个文本文件的内容赋给数组*/
        {
            printf("cannot open this file\n");
            exit(0);
        }
    else
    {
        for(i=0;i<c[0];i++)
            for(j=0;j<a[0][1]-a[0][0]+2;j++)
                fscanf(fp,"%c",&str1[i][j]);
            fclose(fp);
    }
    for(i=0;i<c[0];i++)
    {
        for(j=0;j<a[0][1]-a[0][0]+1;j++)
            printf("%c",str1[i][j]);
            printf("\n");
    }
    if ((fp = fopen("f1.txt","r"))==NULL)
    {
        printf("cannot open this file\n");
        exit(0);
    }
    else
    {
        for(i=0;i<c[0];i++)
            fscanf(fp,"%lf",&fr[i]);
        fclose(fp);
    }
    for(i=0;i<c[0];i++)
            printf("%lf",fr[i]);
    t=c[0];

    for(i=2;i<=m;i++)
    {
        sprintf(fname, "ha%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",&str2[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",str2[x][j]);
                printf("\n");
            }*/
            sprintf(fname, "f%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++)
                    fscanf(fp,"%lf",&fr1[x]);
                fclose(fp);
            }
            k=0;
            for(x=0;x<t;x++)
            {
                //g=0;
                for(j=0;j<c[i-1];j++)
                {
                    if(fr[x]*fr1[j]>q)
                    {
                        fr2[k]=fr[x]*fr1[j];
                        k++;
                        //g++;
                        n=0;
                        /*p=0;
                        if (str1[x][n] !='\n')/*字符连接。。。。。。。。。*/
                                n++;
                        if (str2[j][p] !='\n')
                        {
                            str1[x][n++]=str2[j][p++];
                            str1[g][n++]=str1[x][n++];
                        }      
                        str1[x][n] ='\n';
                        
                        for(p=0;p<g;p++)
                            for(h=0;h<n;h++)
                            {
                                str1[p][]=str1[x][];
                            }*/
                    }
                }
            }
            t=k;
            printf("%d\t",t);
            for(x=0;x<t;x++)
            {
                fr[x]=fr2[x];
            }
            for(x=0;x<t;x++)
            {
                printf("%lf\t",fr[x]);
            }
        }
    }
}
2015-01-09 20:12
ZMX900507
Rank: 1
等 级:新手上路
帖 子:71
专家分:0
注 册:2015-1-8
收藏
得分:0 
回复 8楼 TonyDeng
没有不耐烦,不知道那就话说的不合适,不好意思啊!
2015-01-09 20:14
快速回复:多个文件的链接问题
数据加载中...
 
   



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

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