Los segmentation fault eran por salirme del array y/o trastear con punteros, direcciones, etc.. lo se porque me salían cuando estaba experimentando con los parámetros de las funciones 
La cuestion es que no se como **** hacer para filtrar los archivos que tengan "sms" al final. Esta claro que con operaciones de cadenas, ir comparando, pero no doy con ninguna función de la libreria estándar que lo haga, o bien soy muy torpe ^_^
Ahora mismo tengo este codigo, sacado de ejemplos que he encontrado por la web:
Código:
#include <stdio.h>
#include <dirent.h>
int main()
{
int n;;
struct dirent **namelist;
n=scandir(".",&namelist,0,alphasort); //<< Almacena la lista de archivos en la estructura namelist y devuelve el numero de elementos en "n"
if (n < 0)
perror("scandir");
else {
while(n--) {
printf("%s\n",namelist[n]->d_name); //<< muestra el nombre de archivo del elemento "n"
free(namelist[n]);
}
free(namelist);
}
return 0;
}
El nombre de cada archivo lo tengo en namelist[n]->d_name, asi que solo tengo que ir mirando cual tiene "sms" y almacenarlo en un array de cadenas aparte para ya usarlo luego.. pero comoo comparoo
Ahora mismo estaba mirando en la documentacion de la glibc que vienen bastantes funciones de comparacion de cadenas pero no doy con la buena.
Bueno y ahora que lo pienso, como distingo cuales son carpetas 
A lo mejor hay una forma mas sencilla y me estoy comiendo la cabeza para nada ^_^ las cosas de ser "newbie"
Marcadores