Вопрос по string, c – Как я могу проверить, заканчивается ли строка на «.csv» в C [duplicate]

9

This question already has an answer here:

How to compare ends of strings in C? 19 answers

Как я могу проверить, заканчивается ли строка & quot; .csv & quot; вC

Я пытался использоватьstrlen без успеха

Ваш Ответ

3   ответа
5

Простейшей (и наиболее общей) формой кода ThiefMaster будет:

int string_ends_with(const char * str, const char * suffix)
{
  int str_len = strlen(str);
  int suffix_len = strlen(suffix);

  return 
    (str_len >= suffix_len) &&
    (0 == strcmp(str + (str_len-suffix_len), suffix));
}
43

Как насчет:

char *dot = strrchr(str, '.');
if (dot && !strcmp(dot, ".csv"))
    /* ... */
это, однако, не будет работать для случаев, когда строка содержит больше, чем точка (маловероятно, но, безусловно, возможно)
@kappamaki: это работает, потому чтоstrrchr находит самую правую точку.
str быть строкой
26
if(strlen(str) > 4 && !strcmp(str + strlen(str) - 4, ".csv"))
Чистая удивительность :-)
Так,".csv" не заканчивается".csv"?
Обычно файл.whatever считается, что имеет имя.whatever и без продления. Так что для его вариантов использования это имеет больше смысла ИМО.
... согласился (при условии, что мы говорим об именах файлов).

Похожие вопросы