LINUX.ORG.RU

strncasecmp для русского языка


0

0

Задача: поиск в линукс-программе по именам русских файлов, которые лежат на виндовом разделе. strncasecmp естественно ничего найти не может. Сравнивать нужно естественно не строки целиком а несколько символов из строки. wcsncasecmp не подходит потому что я делаю примерно следующее: dirp = opendir (Database.MusicRoot); if (dirp != NULL) { while (edirp = readdir (dirp)) { if ( !strcmp(edirp->d_name,".") || !strcmp(edirp->d_name,"..") ) continue; ++artistnumber; //just counter of folders //cmpresult=strncasecmp(se_string,edirp->d_name,se_charcounter); cmpresult=wcsncasecmp(se_string,edirp->d_name,se_charcounter); if (cmpresult==0) { se_archednumbers[se_arched]=artistnumber-1; //we have massiv with numbers of found artists, fill element of this massiv ; -1 because massiv starts from 0 element se_arched++; printf("compare\t"); printf("%s\n",edirp->d_name); } } (void) closedir (dirp); } Компилятор ругается на второй аргумент для функции wcsncasecmp , локаль утф-8. Как с этим бороться, или как это обойти, чтобы поиск работал не только для английских, но и для русских файлов?

anonymous

1. Устанавливаем локаль: setlocale (LC_ALL, "ru_RU.utf8")
2. Для сравнения строк пользуем функцию strcoll()

romanSA
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.