Find Directory using C on Linux and Windows
#Find Files in Directory.
///////FIND FIRST///Only Work on WINDOWS (O.S)/////////////
#include <stdio.h>
#include <time.h>
#include<string.h>
#include<sys/io.h>
int main(void)
{
struct _finddata_t c_file;
long hFile;
char path[100]="D:\\sharjeel\\Messages\\";
strcat(path,"/*.wav");
hFile=_findfirst(path ,&c_file);
/* Find first .wav file in current directory */
if(hFile== -1L )
printf( "No *.wav files in current directory!\n" );
else
{
printf( "Listing of .wav files %s\n\n",c_file.name);
/* Find the rest of the .wav files */
while( _findnext( hFile, &c_file ) == 0 )
{
printf( "Listing of .wav files %s\n\n",c_file.name);
}
_findclose( hFile );
}
}
//////////Below Written Function Will work on LINUX as well as WINDOS//////////////
->Search files from directory by date
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
char s[200]="";
snprintf(s,sizeof(s),"dir *.* /od /home/sharjeel/IvChat/MessageBox/");
system(s);
}
->Using OPen Dir, Read Dir & Close DIR functions
CODE :1
#include <stdio.h>
#include <sys/types.h>
#include <stdlib.h>
#include <dirent.h>
#include <errno.h>
int main()
{
DIR *dip;
struct dirent *dit;
char path[150]="/home/sharjeel/IvChat/MessageBox/";
char s[100]="";
int i = 0;
if ((dip = opendir(path)) == NULL)
{
perror("opendir");
return 0;
}
printf("Directory stream is now open\n");
while ((dit = readdir(dip)) != NULL)
{
i++;
printf("NAME:::%s\n", dit->d_name);
strcpy(s,dit->d_name);
printf("NAME IS:::--->%s\n", dit->d_name);
}
printf("\n\nreaddir() %sfound a total of %i files\n",s,i);
/* int closedir(DIR *dir);
*
* Close the stream to argv[1]. And check for errors. */
if (closedir(dip) == -1)
{
perror("closedir");
return 0;
}
printf("\nDirectory stream is now closed\n");
return 1;
}
->Using Scan Dir Function
CODE :2
#include <dirent.h>
#include <stdio.h>
main(){
struct dirent **namelist;
int n,i;
char s[100=]"";
n = scandir("/home/sharjeel/IvChat/MessageBox/", &namelist, 0, alphasort);
if(n < 0)
perror("scandir");
else
{
while(n--){
printf("%s\n", namelist[n]->d_name);
free(namelist[n]);
} free(namelist);
}
for(i=0;i<=strlen(namelist[n]->d_name);i++){
}
}
CODE :3
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <dirent.h>
char *path_cat(const char *str1, char *str2);
int main () {
struct dirent *dp;
// enter existing path to directory below
const char *dir_path="/home/sharjeel/IvChat/MessageBox/";
DIR *dir = opendir(dir_path);
while ((dp=readdir(dir)) != NULL) {
char *tmp;
tmp = path_cat(dir_path, dp->d_name);
printf("%s\n", tmp);
free(tmp);
tmp=NULL;
}
closedir(dir);
return 0;
}
char *path_cat (const char *str1, char *str2) {
size_t str1_len = strlen(str1);
size_t str2_len = strlen(str2);
char *result;
result = malloc((str1_len+str2_len+1)*sizeof *result);
strcpy (result,str1);
int i,j;
for(i=str1_len, j=0; ((i<(str1_len+str2_len)) && (j<str2_len));i++, j++) {
result[i]=str2[j];
}
result[str1_len+str2_len]='\0';
return result;
}
///////FIND FIRST///Only Work on WINDOWS (O.S)/////////////
#include <stdio.h>
#include <time.h>
#include<string.h>
#include<sys/io.h>
int main(void)
{
struct _finddata_t c_file;
long hFile;
char path[100]="D:\\sharjeel\\Messages\\";
strcat(path,"/*.wav");
hFile=_findfirst(path ,&c_file);
/* Find first .wav file in current directory */
if(hFile== -1L )
printf( "No *.wav files in current directory!\n" );
else
{
printf( "Listing of .wav files %s\n\n",c_file.name);
/* Find the rest of the .wav files */
while( _findnext( hFile, &c_file ) == 0 )
{
printf( "Listing of .wav files %s\n\n",c_file.name);
}
_findclose( hFile );
}
}
//////////Below Written Function Will work on LINUX as well as WINDOS//////////////
->Search files from directory by date
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
char s[200]="";
snprintf(s,sizeof(s),"dir *.* /od /home/sharjeel/IvChat/MessageBox/");
system(s);
}
->Using OPen Dir, Read Dir & Close DIR functions
CODE :1
#include <stdio.h>
#include <sys/types.h>
#include <stdlib.h>
#include <dirent.h>
#include <errno.h>
int main()
{
DIR *dip;
struct dirent *dit;
char path[150]="/home/sharjeel/IvChat/MessageBox/";
char s[100]="";
int i = 0;
if ((dip = opendir(path)) == NULL)
{
perror("opendir");
return 0;
}
printf("Directory stream is now open\n");
while ((dit = readdir(dip)) != NULL)
{
i++;
printf("NAME:::%s\n", dit->d_name);
strcpy(s,dit->d_name);
printf("NAME IS:::--->%s\n", dit->d_name);
}
printf("\n\nreaddir() %sfound a total of %i files\n",s,i);
/* int closedir(DIR *dir);
*
* Close the stream to argv[1]. And check for errors. */
if (closedir(dip) == -1)
{
perror("closedir");
return 0;
}
printf("\nDirectory stream is now closed\n");
return 1;
}
->Using Scan Dir Function
CODE :2
#include <dirent.h>
#include <stdio.h>
main(){
struct dirent **namelist;
int n,i;
char s[100=]"";
n = scandir("/home/sharjeel/IvChat/MessageBox/", &namelist, 0, alphasort);
if(n < 0)
perror("scandir");
else
{
while(n--){
printf("%s\n", namelist[n]->d_name);
free(namelist[n]);
} free(namelist);
}
for(i=0;i<=strlen(namelist[n]->d_name);i++){
}
}
CODE :3
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <dirent.h>
char *path_cat(const char *str1, char *str2);
int main () {
struct dirent *dp;
// enter existing path to directory below
const char *dir_path="/home/sharjeel/IvChat/MessageBox/";
DIR *dir = opendir(dir_path);
while ((dp=readdir(dir)) != NULL) {
char *tmp;
tmp = path_cat(dir_path, dp->d_name);
printf("%s\n", tmp);
free(tmp);
tmp=NULL;
}
closedir(dir);
return 0;
}
char *path_cat (const char *str1, char *str2) {
size_t str1_len = strlen(str1);
size_t str2_len = strlen(str2);
char *result;
result = malloc((str1_len+str2_len+1)*sizeof *result);
strcpy (result,str1);
int i,j;
for(i=str1_len, j=0; ((i<(str1_len+str2_len)) && (j<str2_len));i++, j++) {
result[i]=str2[j];
}
result[str1_len+str2_len]='\0';
return result;
}
Comments
Post a Comment