我试图从一个字符串(a=ATCG)中获取子字符串,然后将其存储在一个数组中,但我得到一个警告:赋值使指针中的整数不带强制转换[默认启用]
dna[i]=dna 1;
我要打印输出数组:
ATCG公司
TCG公司
重心
G
我是新来的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;
}

最佳答案

您在dna[20]前面缺少一个“*”。

int main()
{
    char a[]="ATCG";
    char *dna[20];  // <-- this was char dna[20]
    char *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;  // <-- this was the crash
        printf("sequence:%s\n",dna1);
    }
    for(i=0;i<5;i++){
        printf("\nseq:%s\n",dna[i]);
    }
    return 0;
}

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

10-01 06:18