Этот код на самом деле работает для меня (под Win7 / CygWin):
pax$ ./qq
xyzzyaf
xyzzyae
xyzzyad
xyzzyac
xyzzyab
xyzzyaa
.bashrc
.bash_profile
.bash_history
pax$ ls -ad *a* .*a*
.bash_history .bash_profile .bashrc xyzzyaa
xyzzyab xyzzyac xyzzyad xyzzyae
xyzzyaf
Но почему вы используете memchr
?Поле d_name
является строкой в стиле C, о чем свидетельствует тот факт, что вы можете выполнить printf("%s\n",...)
для него.
Для этого следует использовать strchr
.Использование memchr
может выполнять поиск за концом строки, возможно, давая ложные результаты, если он обнаружит a
в любом мусоре после этого.
Если это не поможетвы, то вам нужно определить фразу «очевидно, что это не работает».Другими словами, что это за файлы в каталоге и что вы получаете?Это очень поможет в решении этой проблемы.