Fonction rename ??

Fermé
Utilisateur anonyme - 3 janv. 2010 à 15:58
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 3 janv. 2010 à 19:03
Salut,
Voila j'ai un souci dans mon code C. J'essaye toujours de renommer mon fichier musique.txt mais sa ne marche pas:

#include <stdio.h> 
#include <stdlib.h> 
#include <string.h>

int main(int argc, char *argv[])
{
 FILE* fichier = NULL;

 fichier = fopen("bibliotheque/morceaux/musique.txt", "a+");

//je suppose le fichier bien ouvert

//code de modification du fichier ^^

fclose(fichier);

char titre[100], nomTitre, nomDoc;
scanf("%s",titre);
nomTitre=strcat("bibliotheque/morceaux/",titre);     //ajout d chemin relatif
nomDoc=strcat(nomTitre,".txt");                             //ajout du .txt
rename("bibliotheque/morceaux/musique.txt",nomDoc);

return 0;
}


Voila mais sa marche pas :S et je ne vois pas du tout pourquoi .
Merci d'avance.
A voir également:

1 réponse

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
3 janv. 2010 à 19:03
Salut,
char titre[100], nomTitre, nomDoc;
Tu déclares nomTitre en tant que simple caractère et non en tableau de char, de même pour nomDoc.

nomTitre=strcat("bibliotheque/morceaux/",titre);
La fonction strcat va concaténer la chaîne titre à la constante "bibliotheque/morceaux/" et renverra un pointeur sur l'expression modifiée. Segfault assuré.

Voici un exemple de strcat :
char dest[15]="toto";
char *extension==".txt";
strcat(dest,extension);

Comme tu peux le voir, le tableau dest contient suffisamment de place pour contenir les caractères d'extension. J'insiste bien sur ce point, car c'est à toi de bien vérifier cette condition, sinon cela va "segfaulter". Je te conseille donc vivement d'utiliser strncat.

Cdlt,
0