Я пытаюсь написать функцию на C, чтобы получить расширение файла. Итак, вот мой кодПолучить расширение файла с помощью C
char *getFileNameExtension(char *filename){
char *ext = memchr(filename, '.',strlen(filename));
return ext;
}
Он отлично работает. Но когда я пытаюсь проверить для конкретного типа файлов, как текстовых файлов (.txt) Я использую этот код
if (getFileNameExtension(filename)==".txt"){
printf("%s\n",filename);
}
Но это не работает. Я пытался напечатать две строки в виде целых чисел, и как строки слишком
printf("%s %s",".txt",getFileNameExtension(txtFile));
printf("%d %d",".txt",getFileNameExtension(txtFile));
Первый выход нормально и я получаю: .txt .txt
, но когда я печатаю их как целые числа (код ASCII я думаю) я получаю этот результат: 27918619 4196714
. Кроме того, каждый раз, когда код выполняется, значение int первой строки изменяется (из-за разницы в памяти, я думаю). Может ли кто-нибудь помочь?
Что делать, если имя файла имеет несколько «расширений»? Использовать, например. ['strrchr'] (http://en.cppreference.com/w/cpp/string/byte/strrchr), чтобы получить * последнюю точку. –
@JoachimPileborg Или нет? Я часто использую файлы '.tar.gz' ... –
Кстати, у вас есть неопределенное поведение в ваших вызовах' printf', вы пытаетесь напечатать две строки (или целые), но у вас есть только один аргумент. Кроме того, если вы хотите напечатать указатель, вы должны использовать формат ''% p ''. Печать в виде 'int' даст неправильный результат в 64-битной системе. –