该代码有什么问题,我只想替换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()




启用编译器警告。

10-08 10:48