为什么我不能比较字符串
why can't i compare strings
程序应该做什么:
从用户那里获取 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;
}
你的内存计算是错误的,为 sample[i]
和 sample[j]
分配的内存完全相同,但你试图连接到 sample[i]
这不是正确的事情
strcat(sample[i],sample[j]);
与 gets
手册完全不同的说明
永远不要使用 gets()
。因为在事先不知道数据的情况下无法判断 gets()
将读取多少个字符,并且由于 gets()
将继续存储超过缓冲区末尾的字符,因此使用起来非常危险。它已被用来破坏计算机安全。请改用 fgets()
。
程序应该做什么:
从用户那里获取 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;
}
你的内存计算是错误的,为 sample[i]
和 sample[j]
分配的内存完全相同,但你试图连接到 sample[i]
这不是正确的事情
strcat(sample[i],sample[j]);
与 gets
永远不要使用 gets()
。因为在事先不知道数据的情况下无法判断 gets()
将读取多少个字符,并且由于 gets()
将继续存储超过缓冲区末尾的字符,因此使用起来非常危险。它已被用来破坏计算机安全。请改用 fgets()
。