一个查找有关问题,希望能解决

一个查找问题,希望能解决
HWI-ST568_0052:1:2206:4629:64033#ATCACG 214 283 69 CCAATGTTAGAGCTGACCAGGACTGGATACACGCGACGGCGACAGTAGAGCAAGTCGACAAGCTCCTCG
HWI-ST568_0052:7:1201:2703:166808#CGATGT 230 285 55 CCAGGACTGGATACACGCGACGGCGACAGTAGAGCAAGTCGACAAGCTCCTCGAT
HWI-ST568_0052:1:1105:17008:100504#ATCACG 299 399 100 ATATGCCTTTGGCGATGGAAAAGCCATTCTCCGAACCACAGAATATAACATCCCGGAGGAGCTCACCTCTGCCATCGATTTCGTTCACCCTGTCGCCAAC
HWI-ST568_0052:7:1208:5265:118380#CGATGT 299 399 100 ATATGCCTTTGGCGATGGAAAAGCCATTCTCCGAACCACAGAATATAACATCCCGGAGGAGCTCACCTCTGCCATCGATTTCGTTCACCCTGTCGCCAAC
HWI-ST568_0052:7:2108:11510:189365#CGATGT 299 399 100 ATATGCCTTTGGCGATGGAAAAGCGATTCTCCGAACCACAGAATATAACATCCCGGAGGAGCTTAGCTCTGCCATCGATTTCGTTCACCCCGTCGCCAAC
HWI-ST568_0052:7:1103:10448:148856#CGATGT 301 401 100 ATGCCTTTGGCGATGGAAAAGCCATTCTCCGAACCACAGAATATAACATCCCGGAGGAGCTCACCTCTGCCATCGATTTCGTTCACCCTGTCGCCAACTT

上面是一些基因序列(从txt文件截取出来的),由“tab”分割开,第一个字符流是名字,第二数字是开始位置,接下来是结束位置,后面是DNA长度,在后面的一堆字符流是基因序列。
现在要做的是输入一个基因点,然后就直接输出这个基因点所在的所有基因片段。 比如输入基因点238,那么就列出

HWI-ST568_0052:1:2206:4629:64033#ATCACG 214 283 69 CCAATGTTAGAGCTGACCAGGACTGGATACACGCGACGGCGACAGTAGAGCAAGTCGACAAGCTCCTCG
HWI-ST568_0052:7:1201:2703:166808#CGATGT 230 285 55 CCAGGACTGGATACACGCGACGGCGACAGTAGAGCAAGTCGACAAGCTCCTCGAT

现在我卡在了把所截得的每一行字符流分别对应到各个struct的变量里。大家帮帮我吧,还有后面的对比怎么写啊??如果输出struct的值,是不是就直接print这个struct的名字就行了??

一下是我的代码,大家帮我补充完整吧,有点凌乱了

C/C++ code


#include <stdio.h>
#include <string.h>
#include <conio.h>

struct DNAdata
{
    char name[999];
    int start, end, lon;
    char DNA[999];
};

DNAdata getdata();

FILE *f;

DNAdata a[9999];
char line[9999];
int search;

int main()
{
    int i=0;
    char temp[99];
    while(true)
    {
        printf("Please enter the file name(eg. DNA.txt): ");
        gets(temp);
        f=fopen(temp,"r");
        if(f!=NULL)
        {
            break;
        }
        else
        {
            printf("%s does not exist. Please check the name and enter again.\n",temp);
        }
    }
    while(fgets(line,2048,f)!=NULL)
    {    printf("%s\n",line);
        //a[i]=getdata();
        printf("%d\n",i);
        printf("\n");
        i++;
    }
    fclose(f);

}

/*DNAdata getdata()
{
    
}
*/



------解决方案--------------------
C/C++ code
#include <stdio.h>
#include <string.h>
#define MAXNAMELEN   999
#define MAXNAMELENQ "999"
#define MAXDNALEN    999
#define MAXDNALENQ  "999"
#define MAXDATA     9999
#define MAXLINELEN  9999
#define MAXFNLEN     256
struct DNAdata {
    char name[MAXNAMELEN+1];
    int start, end, len;
    char DNA[MAXDNALEN+1];
} a[MAXDATA];
FILE *f;
char line[MAXLINELEN];
int search;
int i,r,n;
char fn[MAXFNLEN];
int main() {
    while (1) {
        printf("Please enter the file name(eg. DNA.txt): ");
        fflush(stdout);
        rewind(stdin);
        fgets(fn,MAXFNLEN,stdin);
        if ('\n'==fn[strlen(fn)-1]) fn[strlen(fn)-1]=0;
        f=fopen(fn,"r");
        if (f!=NULL) {
            break;
        } else {
            printf("%s does not exist. Please check the name and enter again.\n",fn);
        }
    }
    i=0;
    while (1) {
        if (NULL==fgets(line,MAXLINELEN,f)) break;
        r=sscanf(line,"%"MAXNAMELENQ"s%d%d%d%"MAXDNALENQ"s",a[i].name,&a[i].start,&a[i].end,&a[i].len,a[i].DNA);
        i++;
        if (5!=r) printf("%d lines data format error! ignored.\n",i);
        if (i>=MAXDATA) {
            printf("Up to %d lines dada, spilth ignored.\n",MAXDATA);
            break;
        }
    }
    fclose(f);
    n=i;
    while (1) {
        printf("Please enter the DNA point(-1 to exit): ");
        fflush(stdout);
        rewind(stdin);
        if (1==scanf("%d",&r)) {
            if (r<0) break;
            search=0;
            for (i=0;i<n;i++) {
                if (a[i].start<=r && r<=a[i].end) {
                    search=1;
                    printf("%s %d %d %d %s\n",a[i].name,a[i].start,a[i].end,a[i].len,a[i].DNA);
                }
            }
            if (0==search) printf("Can not find any data in DNA point %d !\n",r);
        }
    }
    return 0;
}