将for循环中的字符串保存到c中的数组中

时间:2016-04-29 02:30:07

标签: c arrays string pointers

我正在尝试从字符串(a = ATCG)获取子字符串,然后将其存储在数组中但是我收到警告:赋值从指针生成整数而没有强制转换[默认情况下启用]  DNA [I] = DNA1;

我想要打印输出数组: ATCG TCG CG ģ

我是C的新手,我该如何解决这个问题?

这是我的计划

int main()
{
    char a[]="ATCG", dna[20], *dna1  ;

    dna1 = (char *)malloc(2000);
    int i, len_of_seg_2;
    for(i = 0; i < strlen(a); i++)
    {
        len_of_seg_2=strlen(a)-i+1;  
        strncpy(dna1, a+i, len_of_seg_2); 
        dna1[len_of_seg_2-1]='\0';

        dna[i]=dna1;
        printf("sequence:%s\n",dna1);
    }
    for(i=0;i<5;i++){
        printf("\nseq:%s\n",dna[i]);
    }
    return 0;   
}

2 个答案:

答案 0 :(得分:2)

你错过了一个&#39; *&#39;面前aggregate

dna[20]

现场演示:http://ideone.com/ZhO3SZ

答案 1 :(得分:0)

dna1的类型为char *dna[i]的类型为char。错误正是它所说的。您正在将指针(dna1)分配给整数值(dna [i])。你不能这样做 - 实际上,你可以和你一样,这就是你看到这个警告的原因 - 没有明确地告诉编译器你想要这样做(在这种情况下是dna[i] = (char)dna1;)。也许你的意思是dna[i] = *dna1?。我不知道你想做什么。

另外,请记住free(dna1)的良好做法。