我试图从一个字符串(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