该代码有什么问题,我只想替换DNA的碱基即可。:
#include <stdio.h>
int getDna(){
int i,t;
printf("How many protein does the DNA have?");
scanf("%d",&t);
char dnaPtn[t],rDnaPtn[t];
printf("Enter the DNA: ");
scanf("%s",&dnaPtn);
for(i=0;i<t;i++){
switch(dnaPtn[i]){
case 'a':
rDnaPtn[i] = "t";
break;
case 'c':
rDnaPtn[i] = "g";
break;
case 'g':
rDnaPtn[i] = "c";
break;
case 't':
rDnaPtn[i] = "a";
break;
default:
break;
}
}
printf("%s",rDnaPtn);
}
int main(){
getDna();
return 0;
}
agcta
的输出为:DNA有多少蛋白质:5
Enter the DNA: agcta
^b'd^!!@
怎么了?
最佳答案
在您的代码中
rDnaPtn[i] = "t";
应该
rDnaPtn[i] = 't';
因为
""
表示字符串,但是您想要的是char
类型。之后,
不要忘记对目标数组进行空终止。
scanf("%s",&dnaPtn);
可以重写为scanf("%s",dnaPtn);
不要遍历整个数组。利用
strlen()
。启用编译器警告。