2013-06-24 3 views
-1

hey im new для программирования .. У меня есть код, в котором im читает файлы в каталоге .. im умеет читать их по отдельности, но мне нужно указать каталог или имя папки и способный читать все файлы в указанном каталоге или папке. любезно помочь мне с этимчитать все файлы из папки или каталога

int main(int argc, char **argv) 
    { 

    char rid[15]; 
    char buffer[100]; 
    char a[100]; 
    char b[100]; 
    DIR *h; 
    struct dirent *dir; 
    h = opendir("."); 
    if (h) 
    { 
     while ((dir = readdir(h)) != NULL) 
     { 
      FILE *file = fopen (dir->d_name , "r"); 
      printf("%s\n", dir->d_name); 
     } 

     closedir(h); 
     } 
     char c[100]; 

     char d[100]; 
     char temp[250]=""; 

     char *token; 
     int comchk = 0; 
     int lino ;. 
     char ch[20], 
     ch1[20]; 
     char value[250], 
     value1[250], 
     value2[250], 
     value3[250]; 
     char query[250]=""; 
     int i; 
     static const char filename[10]; 
     MYSQL *con = mysql_init(NULL); 
     if (con == NULL) 
     { 
     fprintf(stderr, "%s\n", mysql_error(con)); 
     exit(1); 
     } 
     if (mysql_real_connect(con, "localhost", "madhu", "cmmacsgps", "rinex", 0,  0) == NULL) 

     { 

     finish_with_error(con); 

     } 
     if (mysql_query(con, "INSERT INTO rinex1  VALUES('','no','no','no','no','no','no','no','no','no','no','no','no')")) 
     {  
     finish_with_error(con); 


     } 

     int nrid = mysql_insert_id(con); 
     sprintf(rid, "%d", nrid); 
     printf("enter filename\n"); 
     scanf("%s",filename); 
     FILE *file = fopen (filename, "r"); 
     if (file != NULL) 
     { 
     char line [250]; /* or other suitable maximum line size */ 
     char line1 [250]; 
      char *token1; 
      char *token2; 
      int tabno=0; 

     while (fgets (line, sizeof line, file) != NULL) /* read a line */ 
     { 
     lino =lino+1; 
     strcpy(line1,line); 

      substring(60, 80, line1, a, sizeof a); 
      substring(0, 60, line1, b, sizeof b); 
      strcpy(c,a); 
      } 
     fclose (file); 
      } 
      mysql_close(con); 

      exit(0); 

      }` 

`

+3

Посмотрите на этот пример: http://stackoverflow.com/a/11737506/1758762. – duDE

+0

эй! Спасибо тонну за ответ, я ссылаюсь на код, отправленный, но он помогает мне решить мою проблему, мне нужно прочитать, если у них двадцать файлов в папке, мне нужно прочитать их все по одному cud u pls помогите мне расширить это. – user2515734

ответ

0

Если внедрение под окнами только что прочитал использовать dirent.h

http://pubs.opengroup.org/onlinepubs/007908799/xsh/dirent.h.html

Вы собираетесь хотите проверить функцию READDIR и проверить пример. Используйте это, чтобы получить имя файлов, чем применять остальную часть процесса для каждого файла,

+0

эй спасибо за ответ! Я не использую windows, используя linux. да, я могу перечислить имена файлов в каталоге, как мне получить код, чтобы прочитать их все по одному – user2515734

+0

просто используйте обычный код для чтения файла, так как теперь вы знаете их имена. Создайте функцию, которая получает путь в качестве аргумента и читает файл. Например, скажем, папка «dir», и вы получаете «file1» и «file2». Для каждого из них вы должны называть your_read_function («dir/file1») и your_read_function («dir/file2»), в котором вы открываете() файл, читаете его с помощью fgets или fscanf или бинарного чтения (в соответствии с вашими потребностями и fclose(). –

+0

Привет, avner! Спасибо за ответ, но это утомительно, если я должен был дать имена каждого файла. В этой папке есть 20 файлов, которые нужно читать один за другим. Как я могу это сделать? – user2515734