gpt4 book ai didi

比较C中char数组的子范围

转载 作者:太空宇宙 更新时间:2023-11-04 01:10:18 25 4
gpt4 key购买 nike

我想使用 strcmp 将 char 数组的子范围与另一个字符串进行比较。我通过从文本文件中读取然后将它们连接成一个更长的字符数组来制作 dna 字符数组。

char dna[10] = "ATGGATGATGA";
char STOP_CODON[3] = "TAA";
int TS1 = strcmp(&STOP_CODON[0]),dna[0]);
int TS2 = strcmp(&STOP_CODON[1]),dna[1]);
int TS3 = strcmp(&STOP_CODON[2]),dna[2]);

if(T1+T2+T3) == 3 {
int T = 1;
}

因此,如果它们都匹配,则 T 返回 true(1) 我想在三个字符的子范围内比较 STOP_CODON 和 dna。 我想不出一种简单的方法来做到这一点。在 matlab 中你可以这样做:

strcmp(STOP_CODON[1:3],dna[1:3])

在 C 中可以实现这样的功能吗?我想用它最终遍历整个 dna 数组,实际上是 60,000 个字符长

printf("%s.6\n",&dna[1]); 

printf 有这种功能,但我想用 strcmp 实现。在 C 中有比这更高效的东西吗?

最佳答案

您不能使用 strcmp 执行此操作,它会比较字符串直到它看到空字符 ('\0')。相反,使用 memcmp ,它比较特定数量的字节,或 strncmp , 它允许您指定要比较的最大字符数。

// Compare up to 3 characters, stopping at the first null character.
if (strncmp(STOP_CODON, dna, 3) == 0) {
// they match
}

// Copy exactly 3 bytes, even if they contain null characters.
if (memcmp(STOP_CODON, dna, 3) == 0) {
// they match
}

另请注意,当字符串匹配时,这两个函数都返回 0(而不是 1)。如果第一个字符串“小于”第二个字符串,它们将返回一个小于 的数字,如果第二个字符串“小于”,则返回一个大于 的小于零的数字第一个。

关于比较C中char数组的子范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13792806/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com