c-don'中的短函数;我不明白是什么';这是不对的

c-don'中的短函数;我不明白是什么';这是不对的,c,C,我在写一个函数,它只计算DNA的“互补”链,意思是用G替换C,用a替换T,等等 这是我写的: #include <stdio.h> #include <string.h> #define SIZE 70 int isLegitSequence(char sequence[]); void getComplementaryStrand(char complementary[],char sequence[]); int findSubSequence(char sequ

我在写一个函数,它只计算DNA的“互补”链,意思是用G替换C,用a替换T,等等

这是我写的:

#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';
}
这是我第一次使用函数,所以我不确定我在这里做错了什么。
非常感谢您的帮助,但在我的理解范围内,即非常非常基本

您需要在调用函数的源文件顶部添加函数原型
getComplementaryStrand

在源文件顶部添加此行:

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

编辑:同时问题已更改。。。之前它是一个编译错误。OP请提出新问题,而不是用新问题编辑原始问题

您需要在调用函数的源文件顶部添加函数原型
getComplementaryStrand

在源文件顶部添加此行:

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

编辑:同时问题已更改。。。之前它是一个编译错误。OP请提出新问题,而不是用新问题编辑原始问题

getComplementaryStrand()
中,除了结束字符,您永远不会在互补字符串中填充任何内容。所以你得到了垃圾。

getComplementaryStrand()
中,除了结束字符,你从不在互补字符串中填充任何内容。所以你得到了垃圾。

仔细查看
getComplementaryStrand()
函数中的for循环。是否将值指定给正确的字符串?我认为不是。

仔细查看
getComplementaryStrand()
函数中的for循环。是否将值指定给正确的字符串?我想没有。

您在头文件中声明此函数的方式有点不同吗?@Benj您发现我在头文件中拼错了互补项。感谢不要使用
获取
gets
不再是C函数,在以前的C标准版本中已被弃用。我只允许使用scanf和gets:(虽然这不是真正的问题,但请将其设为
int main(void)
。这只是正确的编码。您在头文件中声明此函数时有没有稍微不同?@Benj您发现我在头文件中拼错了互补项。感谢不要使用
gets
gets
不再是C函数,并且在以前的C标准版本中被弃用。我只允许使用scanf and gets:(虽然这不是真正的问题,但将其设置为
intmain(void)
。这只是正确的编码。