C 为什么可以';我不能比较字符串吗
该计划应该做什么: 从用户处获取DNA代码 获取10个三字母单词 如果任何2个3个字母的组合与DNA代码相对应,程序将打印它 我希望我能解释清楚 我不知道它为什么会崩溃,但我想这是关于我试图做的双指针的事情。或者是strcmp的事C 为什么可以';我不能比较字符串吗,c,pointers,malloc,strcmp,C,Pointers,Malloc,Strcmp,该计划应该做什么: 从用户处获取DNA代码 获取10个三字母单词 如果任何2个3个字母的组合与DNA代码相对应,程序将打印它 我希望我能解释清楚 我不知道它为什么会崩溃,但我想这是关于我试图做的双指针的事情。或者是strcmp的事 #include <stdio.h> #include <string.h> #include <stdlib.h> int main() { char * dna; char ** sample; int
#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;
}
#包括
#包括
#包括
int main()
{
char*dna;
炭**样品;
int i,j,len;
dna=(char*)malloc(sizeof(char)*20);
获取(dna);
样本=(char**)malloc(sizeof(char*)*10);
对于(i=0;i您的内存计算是错误的,为sample[i]
和sample[j]
分配的内存是完全相同的,但是您试图连接到sample[i]
,这是不正确的
strcat(sample[i],sample[j]);
与get的手册完全不同的注释
永远不要使用gets()
。因为在不事先知道数据的情况下无法判断将读取多少个字符gets()
,而且gets()
将继续存储超过缓冲区末尾的字符,所以使用它是非常危险的。它被用来破坏计算机安全。使用fgets()< /p> > “我不知道它为什么会变”——考虑使用调试器可能是你给程序的输入吗?<代码> STRCAT(示例[i],样本[j]);< /Cord>你希望有多少个字符<代码>样本[I]?
是否保留?您没有为10个单词提供内存。您提供的内存仅为1个字母的单词。我将每个样本[i]设置为一个字符串数组,并使其保留3个字母