为什么我不能比较字符串

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()