Bonjour,
Voila j'ai coder un petit programme en C qui me permet de renommer des fichiers .avi présent dans un répertoire de la même façon le Titre est recuperer depuis un fichier texte et le mon problème c'est que les fichiers ne sont pas renommer or la chaine de l'ancien nom est correct et celle du nouveau aussi...
Voici mon code:
#include <stdio.h>
#include <stdlib.h>
#include <dirent.h>
#include <windows.h>
#include <string.h>
#define MAX_CHAR 85
void lecture_dir(const char* dir)
{
struct dirent *lecture;
DIR *rep;
FILE *fichier;
rep=opendir(dir);
fichier=fopen("Titres.txt", "r");
int i=0; int c=0;
long len_name, len_dir, len_sl, len, len1, len_title=0;
char D='-'; char chaine[MAX_CHAR];
char* buffer;
char* buffer1;
char* pTitle[500];
const char* Slash="\";
/////////////////////////////////*************** Ouverture fichier Titres.txt **************///////////////////////////////////////
while(fgets(chaine, MAX_CHAR, fichier) != NULL)
{
len_title=strlen(chaine);
pTitle[c]=(char *)calloc(len_title+1, sizeof(char));
strcpy(pTitle[c], chaine);
printf("Num: %d Titre: %s", c, pTitle[c]);
c++;
}
fclose(fichier);
printf("\n");
/////////////////////////////////********************* Ouverture repertoire *****************///////////////////////////////////////
while(lecture=readdir(rep))
{
if(strcmp(lecture->d_name, ".")!=0)
if(strcmp(lecture->d_name, "..")!=0)
if(strcmp(lecture->d_name, "desktop.ini")!=0)
if(strcmp(lecture->d_name, "Desktop.ini")!=0)
{
len_name=strlen(lecture->d_name);
len_dir=strlen(dir);
len_sl=strlen(Slash);
len=len_name+len_dir+len_sl;
len1=len_title+len_dir+len_sl;
buffer=(char *)calloc(len+1, sizeof(char));
buffer1=(char *)calloc(len1+1, sizeof(char));
strcat(buffer, dir);
strcat(buffer, Slash);
strcat(buffer, lecture->d_name); //De la forme "test\\Old_Nom_fichier.avi"
strcat(buffer1, buffer);
for(int j=0;j<=len1;j++)
{
if((buffer1[j])==D)
{
strcpy(buffer1+j+1, pTitle[i]); //De la forme "test\\01.02 - New_Nom_fichier.avi"
printf("%s\n", buffer1);
if(rename(buffer, buffer1)==0)
{
printf(" %s Ok\n", buffer1);
}
}
}
i++;
}
}
closedir(rep);
}
int main(void)
{
int c;
char* choix;
choix=(char *)calloc(20+1, sizeof(char));
scanf("%d", &c);
switch(c)
{
case 1:
strcpy(choix, "Saison 1");
lecture_dir(choix);
getchar();
break;
case 2:
strcpy(choix, "Saison 2");
lecture_dir(choix);
getchar();
break;
case 3:
strcpy(choix, "Saison 3");
lecture_dir(choix);
getchar();
break;
case 4:
strcpy(choix, "Saison 4");
lecture_dir(choix);
getchar();
break;
case 5:
strcpy(choix, "Saison 5");
lecture_dir(choix);
getchar();
break;
case 6:
strcpy(choix, "Saison 6");
lecture_dir(choix);
getchar();
break;
case 7:
strcpy(choix, "Saison 7");
lecture_dir(choix);
getchar();
break;
case 8:
strcpy(choix, "Saison 8");
lecture_dir(choix);
getchar();
break;
case 9:
strcpy(choix, "Saison 9");
lecture_dir(choix);
getchar();
break;
case 10:
strcpy(choix, "Saison 10");
lecture_dir(choix);
getchar();
break;
default:
strcpy(choix, "test");
lecture_dir(choix);
getchar();
break;
}
return 0;
}
et voici le fichier Titres.txt:
Illuminatti.avi
La relève.avi
Monsieur Ed.avi
Partenaires.avi
Super héros.avi
Un meurtrier parmi nous.avi
Retour vers le futur.avi
Gormogon.avi
La magie de Noël.avi
À toute vitesse.avi
L'ésprit d'équipe.avi
Lorsque l'enfant paraît….avi
La Raison et le cœur.avi
Mélodie pour un meurtre.avi
L’Apprenti.avi