Вы должны разыменовать указатель, чтобы посмотреть на значение, на которое он указывает:
while (*point != '\0')
point++;
Обратите внимание, что правая часть - это символьный литерал (одинарные кавычки), а не строка (двойные кавычки).Это исправляет предупреждение, которое вы получили при попытке использовать строку.
Также обратите внимание, что действительно нет необходимости искать конец строки, чтобы проверить это.Лучшим подходом было бы:
int ends_with(const char* name, const char* extension, size_t length)
{
const char* ldot = strrchr(name, '.');
if (ldot != NULL)
{
if (length == 0)
length = strlen(extension);
return strncmp(ldot + 1, extension, length) == 0;
}
return 0;
}
. Вызовите выше, например, с помощьюpts_with ("test.foo", "foo", 3), и вы получите 1 возвращенный результат, если совпадений не найдено, он вернет 0.
Это не быстрее, но намного понятнее, поскольку работает на более высоком уровне, используя только хорошо известные стандартные строковые функции.