我有一个字符串(在本例中是一个网站 ( 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 值进行硬编码,例如
97
或122
。它既不便携也不可读。使用'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/