大家好我有一个字符串(在这种情况下是一个网站(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);
}
答案 0 :(得分:2)
您的功能有问题:
for
循环有效地删除str2
指向的字符串。不能保证它甚至有一个空终止符。while
循环如果str1
不包含.
或者短于str2
,则会调用未定义的行为。97
或122
等ASCII值进行硬编码。它既不便携也不可读。使用'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);
}