Jak mogę sprawdzić, czy ciąg kończy się „.csv” w C
Jak mogę sprawdzić, czy ciąg kończy się „.csv” w C
Próbowałem za pomocą strlen
bez powodzenia
Jak mogę sprawdzić, czy ciąg kończy się „.csv” w C
Jak mogę sprawdzić, czy ciąg kończy się „.csv” w C
Próbowałem za pomocą strlen
bez powodzenia
Jak o:
char *dot = strrchr(str, '.');
if (dot && !strcmp(dot, ".csv"))
/* ... */
if(strlen(str) > 4 && !strcmp(str + strlen(str) - 4, ".csv"))
Czysta wspaniałość :-) – cnicutar
A więc ".csv" 'nie kończy się na' ".csv" '? –
Zwykle plik '.whatever' jest uznawany za nazwę' .whatever' i bez rozszerzenia. Więc dla jego przypadków użycia ma to bardziej sensowny IMO. – ThiefMaster
Najprostszym (i najbardziej ogólnie) forma kodu ThiefMaster byłoby:
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));
}
'str' jest ciąg –
To jednak nie zadziała w przypadku gdy ciąg zawiera więcej niż okres (prawdopodobnie nie, ale na pewno jest to możliwe) – kappamaki
@kappamaki: To działa, ponieważ' strrchr' znajdzie prawym najbardziej kropka. –