高分求C语言问题解决——关于TXT文件导入

C语言 码拜 10年前 (2015-05-11) 1181次浏览 0个评论
 

我有一道题目,要求建立一个索引,然后我想用链表或数组从txt导入数据
具体数据如下:
>read_170_1_1 random_genome_10000000 3888122 100 
TTTCCTTTTTTTGAACAGATGATTTTAGTGAGCACTGCGCTAGGAGTATGTGTTGAATCTCCAACCCTCGGAACATAGTCGTTGCTCTTGCGGACTGAGA
>read_170_2_1 random_genome_10000000 5846156 100 
GGAATCTGCAACTCGGATGGCCGTCTCAAGTAAGCAACAACATTGTTGCTTGCGGCTTCCCGGGTGTCGCTAAGCGTTTAAAAAGTTGTTAGGATTAACC
>read_170_3_1 random_genome_10000000 9709431 100 
CTCTTTCTACCTAATGGTGAAATTCGCGAGAGAACGATTAGACACGCCGCGCTGATGGGCAGGAGTGTTTGCACTCGATGAATCCCTCGACTGGGACCGG
。。。(一共100W个。。。)
以上数据只要大写的字母部分导入,如TTTCCTTTTTTTGAACAGATGATTTTAGTGAGCACTGCGCTAGGAGTATGTGTTGAATCTCCAACCCTCGGAACATAGTCGTTGCTCTTGCGGACTGAGA为一个数据,然后同时每导入一个数据要求编号,如1,2,3.。。。最后能输出从TXT导入的数据和对应的编号。。。
谢谢大神!!

急死我了 我QQ598505282 在线等!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
100分
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <malloc.h>
char *DNA;
char ln[200];
char st[200];
FILE *f;
int i,n;
int main() {
    DNA=(char *)calloc(1000000*200,1);
    if (null==DNA) {
        printf("Can not calloc 1000000*200 bytes!\n");
        return 1;
    }
    f=fopen("in.txt","r");
    if (NULL==f) {
        printf("Can not open file in.txt!\n");
        return 2;
    }
    i=0;
    while (1) {
        if (NULL==fgets(ln,200,f)) break;
        if (1==sscanf(ln,"%199[ACGT]",st)) {
            strcpy(DNA+i*200,st);
            i++;
            if (i>=1000000) break;
        }
    }
    fclose(f);
    n=i;
    for (i=0;i<n;i++) printf("%s  %d\n",i+1,DNA+i*200);
    free(DNA);
    return 0;
}
第32行
    for (i=0;i<n;i++) printf(“%s  %d\n”,i+1,DNA+i*200);
应改为
    for (i=0;i<n;i++) printf(“%s  %d\n”,DNA+i*200,i+1);
ls的写的有点问题啊?????求解决 也给分!!
C:\Users\Administrator\Desktop\东北赛\编写尝试\索引\solexa.c(12) : error C2065: “”null”” : undeclared identifier
C:\Users\Administrator\Desktop\东北赛\编写尝试\索引\solexa.c(12) : warning C4047: “”==”” : “”int “” differs in levels of indirection from “”char *””
大写字母部分只包含字母:ACGT?
引用 4 楼 hitmajiahao 的回复:

ls的写的有点问题啊?????求解决 也给分!!
C:\Users\Administrator\Desktop\东北赛\编写尝试\索引\solexa.c(12) : error C2065: “”null”” : undeclared identifier
C:\Users\Administrator\Desktop\东北赛\编写尝试\索引\solexa.c(12) : warning C4047: “”==”” : “”int “” differs in levels of indirection from “”char *””

把null改为NULL,就行了

#include<stdio.h>
#include<malloc.h>

int main()
{
	int invalidnum;
	int id,len;
	char *val=NULL;
	FILE *file=fopen("in.txt","r");
	if(!file)
	{
		fputs("Can""t open file in.txt",stderr);
		return 1;
	}
	else
	{
		while(fscanf(file,">read_%d_%d_%d random_genome_%d %d %d\n",&invalidnum,&id,&invalidnum,&invalidnum,&invalidnum,&len)!=EOF)
		{
			char *tval=(char*)realloc(val,sizeof(char)*++len);
			if(!tval)
			{
				if(val)free(val);
				fclose(file);
				fputs("No memory can be allocated",stderr);
				return 2;
			}
			val=tval;
			fgets(val,len,file);
			printf("%s\t%d\n",val,id);
			fgetc(file);
		}
		if(val)free(val);
		fclose(file);
	}
	return 0;
}
引用 6 楼 zhangxiangDavaid 的回复:
Quote: 引用 4 楼 hitmajiahao 的回复:

ls的写的有点问题啊?????求解决 也给分!!
C:\Users\Administrator\Desktop\东北赛\编写尝试\索引\solexa.c(12) : error C2065: “”null”” : undeclared identifier
C:\Users\Administrator\Desktop\东北赛\编写尝试\索引\solexa.c(12) : warning C4047: “”==”” : “”int “” differs in levels of indirection from “”char *””

把null改为NULL,就行了

谢谢斧正!

见你的另一帖子,我的回复

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明高分求C语言问题解决——关于TXT文件导入
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!