该程序应该做什么:
从用户那里获取DNA代码
获取10个3个字母的单词
如果任意两个3个字母的组合与DNA代码程序相对应,则会打印出来。
我希望我能很好地解释它。
我不知道为什么它崩溃,但是我想这与我试图做的双指针有关。还是strcmp的东西。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
char * dna;
char ** sample;
int i,j,len;
dna = (char*) malloc(sizeof(char)*20);
gets(dna);
sample = (char **) malloc(sizeof(char*)*10);
for(i=0; i<5; i++)
{
sample[i] = (char *) malloc(sizeof(char)*3);
}
for(i=0; i<5; i++)
{
gets(sample[i]);
}
for(i=0; i<5; i++)
{
for(j=0; j<5; j++)
{
strcat(sample[i],sample[j]);
if(strcmp(sample[i], dna)==0)
{
puts(sample[i]);
return 0;
}
}
}
for(i=0;i<5;i++)
{
free(sample[i]);
}
free(sample);
free(dna);
return 0;
}
答案 0 :(得分:1)
您的内存计算错误,为sample[i]
和sample[j]
分配的内存完全相同,但是您试图将其连接到sample[i]
上,这是不正确的
strcat(sample[i],sample[j]);
与gets
的手册完全不同
请勿使用gets()
。因为无法不知道数据就无法知道gets()
将读取多少个字符,并且由于gets()
将继续存储超过缓冲区末尾的字符,所以使用它非常危险。它已被用来破坏计算机的安全性。请改用fgets()
。