【发布时间】:2018-10-04 06:04:48
【问题描述】:
程序应该做什么:
从用户那里获取 DNA 代码
获取 10 个 3 字母单词
如果任意2个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;
}
【问题讨论】:
-
“我不知道为什么会崩溃”——考虑使用调试器可能是
-
你给程序的输入是什么?
-
strcat(sample[i],sample[j]);您希望sample[i]保留多少个字符? -
你没有为 10 个单词提供记忆。而且你提供的内存只针对1个字母的单词。
-
我将每个样本[i] 设为一个字符串数组并使其包含 3 个字母