簡體   English   中英

C中的短函數-不明白怎么了

[英]short function in c - don't understand what's wrong

我正在編寫一個函數,該函數僅計算DNA的“互補”鏈,這意味着將C替換為G,將T替換為A,依此類推。

這是我寫的:

#include <stdio.h>
#include <string.h> 
#define SIZE 70

int isLegitSequence(char sequence[]);
void getComplementaryStrand(char complementary[],char sequence[]);
int findSubSequence(char sequence[],char subsequence[]);
int findSubComplementary(char sequence[],char subcomplementary[]);
void cutSequence(char sequence[],char tocut[]);
void checkDNAList(char data[][SIZE],int rows,char sequence[]);


void main(){
    char dnaSequence[SIZE];
    char compDnaSequence[SIZE];

    printf("Enter a DNA Strand\n");
    gets(dnaSequence);
    printf("%d\n",isLegitSequence(dnaSequence));
    getComplementaryStrand(compDnaSequence,dnaSequence);
    puts(compDnaSequence);

}

int isLegitSequence(char sequence[]){
    int i=0;
    while (sequence[i]){
        if(sequence[i]=='A'||sequence[i]=='C'||sequence[i]=='G'||sequence[i]=='T');
        else return 0;
        i++;
    }
    return 1;
}

void getComplementaryStrand(char complementary[SIZE],char sequence[SIZE]){
    int j=strlen(sequence)-1,i;
    for(i=0;sequence[i];i++,j--){
        if(sequence[i]=='A') sequence[j]='T';
        else if(sequence[i]=='C') sequence[j]='G';
        else if(sequence[i]=='G') sequence[j]='C';
        else sequence[j]='A';
    }
    complementary[strlen(sequence)]='\0';
}

但是,這是我運行程序時得到的:

Enter a DNA Strand
CGCTC
1
╠╠╠╠╠
Press any key to continue . . .

這是我第一次使用函數,所以我不確定在這里做錯了什么。 希望能有幫助,但在我的理解范圍內,即非常非常基礎。

您需要在調用該函數的源文件頂部添加函數getComplementaryStrand的原型。

將此行添加到源文件的頂部:

void getComplementaryStrand(char complementary[SIZE],char sequence[SIZE]);

編輯 :在此期間問題已更改...在它是編譯錯誤之前。 OP,請問一個新問題,而不是用一個新問題編輯您的原始問題。

getComplementaryStrand()中,除了結尾字符外,您永遠不會在補充字符串中填充任何內容。 這樣你就會得到垃圾。

請仔細查看getComplementaryStrand()函數中的for循環。 您是否正在為正確的字符串分配值? 我想不是。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM