I'm using if(strstr(dir->d_name, ".") == NULL && strstr(dir->d_name, "..")to check if its a directory/subdirectory, but this is still printing out some files that are not directories...Im using the direct struct and DIR.
strstr searches for a substring inside another string, so it will return a match for every name that contains a single (well, or a double) period.
You probably meant to use strcmp:
if (strcmp(dir->d_name, ".") && strcmp(dir->d_name, ".."))
.. not one of the default root folders ..
Before or after this, you can check if it is a folder or not:
if (dir->d_type == DT_DIR)
..
or use stat. (Note that d_type may not be supported by certain file system types.)
Personally, I like stat() and fstat(). You then look at the st_mode field of the output with macros like S_ISDIR(m).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With