gpt4 book ai didi

c - 如何检查字符串末尾是否包含子字符串?

转载 作者:行者123 更新时间:2023-12-04 12:18:27 25 4
gpt4 key购买 nike

我有一个字符串(在本例中是一个网站 ( www.example.com )),我想检查它是否以 .com 结尾。我该怎么做?

这是我尝试过的:

compName(char str1[], char str2[])
{
int i = 0, c = 0;
for (i; str2[i] != 0; i++)
str2[i] = 0;
while (str1[i] != '.')
i++;
i++;
while (str1[i] != '.')
{
str2[c] = str1[i];
i++;
c++;
}
str2[i] = 0;
if (str2[0] >= 97 && str2[0] <= 122)
str2[0] = str2[0] - 32;
printf("%s", str2);
}

最佳答案

您的函数有问题:

  • 您省略了返回类型,标准 C 不再支持此类型。
  • 第一个for循环有效地删除了 str2 指向的字符串。甚至不能保证它有一个空终止符。
  • while如果 str1 则循环调用未定义的行为不包含.或者如果它短于 str2 .
  • 不要对 ASCII 值进行硬编码,例如 97122 。它既不便携也不可读。使用'a''z'或者最好是 <ctype.h> 中定义的函数.

这是一个适合您的目的的简单字符串函数:

int str_ends_with(const char *s, const char *suffix) {
size_t slen = strlen(s);
size_t suffix_len = strlen(suffix);

return suffix_len <= slen && !strcmp(s + slen - suffix_len, suffix);
}

关于c - 如何检查字符串末尾是否包含子字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41652654/

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