我是一个新的c编程,所以我不理解为这个过程工作。
我的结构定义如下。
struct codons
{
char amino_acid[20], slc[20], dna_codon[40];
};
struct codons c1 = {"Isoleucine", "I", "ATT, ATC, ATA"};
struct codons c2 = {"Leucine", "L", "CTT, CTC, CTA, CTG, TTA, TTG"};
用户必须输入字符串序列。例如:
printf("Enter the sentence: ");
gets(str);
如果用户输入如下字符串:
ATTCTGCTTTTA
然后我必须将此字符串转换为3char长度字符串,如
ATT, CTG, CTT, etc.
然后,我必须检查这个短字符串的3个字符串是否存在于结构中。
我不知道如何将字符串转换为3char字符串长度并检查。
有人能建议我吗?
答案 0 :(得分:3)
要获取字符串的前3个字符,只需分配该大小的缓冲区并将那些字符放在那里:
char substring[4];
strncpy(substring, input, 3);
char substring[3] = '\0';
然后使用strstr来检查字符串"的可能性"包含子字符串:
if (strstr(possibilities, substring) != NULL)
// ...
(你没有像评论所说的那样发布结构定义,所以我对"可能性"的实名更加准确。)
如果你想继续,只需做一些指针运算并重复所有程序:
strncpy(substring, input + 3, 3)
// and so on...
答案 1 :(得分:2)
您可以执行以下操作:
char* input_string = ...;
//check if user entered string that could be divided into 3 letters substrings
if (strlen(input_string) % 3 != 0)
return;
while (*input_string != '\0')
{
char string_3l[4] = {'\0'};
strncpy(string_3l, input_string, 3);
//check if string_3l is part of structure
if ((strstr(string_3l, c1.dna_codon) != NULL) ||
(strstr(string_3l, c2.dna_codon) != NULL))
{
//YOU HAVE MATCH!
}
input_string += 3;
}
当然你应该检查c1和c2结构。