【发布时间】:2017-07-26 23:56:15
【问题描述】:
我在这方面遇到了运行时错误,我似乎无法弄清楚。 这是我的代码,用于反转字符串并将 A 更改为 T,反之亦然,并将 C 更改为 G,反之亦然,
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
char* reverse(char *input)
{
int len=strlen(input);
char *rev=NULL;
rev=(char*)malloc(sizeof(char)*len);
int i,k=0;
for(i=len-1;i>=0;i--)
{
rev[k++]=input[i];
if(rev[k-1]=='A')
rev[k-1]='T';
else if(rev[k-1]=='T')
rev[k-1]='A';
else if(rev[k-1]=='C')
rev[k-1]='G';
else if(rev[k-1]=='G')
rev[k-1]='C';
}
rev[k]='\0';
return rev;
}
int main()
{
char *input=(char *)malloc(sizeof(char)*1000);
scanf("%s",input);
char *str =NULL;//(char*)malloc(sizeof(char)*1000);
str=reverse(input);
printf("%s",input);
free(input);
}
【问题讨论】:
-
-
str=reverse(input);正在泄漏内存。 -
进行了必要的更改,但我仍然遇到同样的错误。
-
我试试你的程序,它对我有用。只需在调用 reverse 之前将最后一个 printf 更改为
printf("%s\n", str);和input = "ATGC"即可。它可以正常工作并打印 CGAT。 -
在函数中:
main(),数组str[]正在设置,但从未使用过。
标签: c