Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2939 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  strcat

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

strcat

n°2133417
lebron54
Posté le 28-03-2012 à 11:08:45  profilanswer
 

bonjour,
je cherche à faire deux strcat consécutifs, mais j'ai un petit problème
 
file = "/mnt/disque/audio"
 
void fonction (char *file)
{
    char *file1;
    char *file2;
 
    file1 = file;
    file2 = file;
    strcat(file1, "ch1.wav" );
    strcat(file2, "ch2.wav" );
    printf("%s\n", file1);
    printf("%s\n", file2);
}
 
et j'obtient :  
    /mnt/disque/audio_ch1.wav
    /mnt/disque/audio_ch1.wav_ch2.wav

mood
Publicité
Posté le 28-03-2012 à 11:08:45  profilanswer
 

n°2133419
gilou
Modérateur
Modzilla
Posté le 28-03-2012 à 11:15:31  profilanswer
 

Et vous avez même du pot que ça plante pas direct!
Vu que file = "/mnt/disque/audio" il est ou l'espace alloué pour les caractères que vous rajoutez à file avec strcat?
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2133433
lebron54
Posté le 28-03-2012 à 11:57:47  profilanswer
 

avant il y a  
    char file[100]

n°2133441
delirium6
Posté le 28-03-2012 à 12:21:19  profilanswer
 

Tu cherche a obtenir quoi d'abord comme résultat?
 /mnt/disque/audio_ch1.wav
 /mnt/disque/audio_ch2.wav
 
Tu obtiens ça  
  /mnt/disque/audio_ch1.wav  
    /mnt/disque/audio_ch1.wav_ch2.wav
 
car ton file1 et ton file2 sont des pointeurs sur ton file, du coup que tu modifie file1 ou file2 au final tu modifie file !

n°2133442
Terminapor
I'll see you rise.
Posté le 28-03-2012 à 12:21:21  profilanswer
 

Code :
  1. file1 = (char*)malloc(strlen(file)+7);
  2. file2 = (char*)malloc(strlen(file)+7);
  3. strcpy(file1,file);
  4. strcpy(file2,file);
  5. strcat(file1,"ch1.wav" );
  6. strcat(file2,"ch2.wav" );
 

Parce que là, tu fais pointer file1 sur ta chaîne file, donc ton strcat ajoutera directement à la fin de file "ch1.wav", ensuite "ch2.wav" (vu que ch2 pointe aussi sur ta chaîne file)

 

edit : Rah, grillé de 3secs :o


Message édité par Terminapor le 28-03-2012 à 12:21:42

---------------
Perhaps you don't deserve to breathe
n°2133467
lebron54
Posté le 28-03-2012 à 14:01:48  profilanswer
 

j'ai essayé avec les malloc, mais le résultat est toujours le meme

n°2133500
gilou
Modérateur
Modzilla
Posté le 28-03-2012 à 15:25:50  profilanswer
 

Donc fais voir tout ton code, et pas seulement un bout insuffisant qui ne permet pas de diagnostiquer le pb.  
Parce que ce qu'a posté Terminapor est un code 100% correct.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2133598
lebron54
Posté le 29-03-2012 à 09:39:02  profilanswer
 

j'ai rien dis, ça marche
merci

n°2133673
lebron54
Posté le 29-03-2012 à 12:11:16  profilanswer
 

par contre j'ai un problème d'allocation mémoire :
 
*** glibc detected *** munmap_chunk(): invalid pointer: 0x087110f0 ***

n°2133674
gilou
Modérateur
Modzilla
Posté le 29-03-2012 à 12:13:20  profilanswer
 

C'est sur que sans poster ton code, grâce a nos boules de cristal suractivées, on va tout de suite en deviner la cause :sarcastic:  
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
mood
Publicité
Posté le 29-03-2012 à 12:13:20  profilanswer
 

n°2133683
lebron54
Posté le 29-03-2012 à 12:26:27  profilanswer
 

moi je veux bien, mais il fait 200000 lignes :)
j'ai posté l'eesentiel

n°2133685
Terminapor
I'll see you rise.
Posté le 29-03-2012 à 12:29:31  profilanswer
 

Non attends, l'adresse 0x087110F0 c'est un début de tableau de structure, celle-ci qui contient un int comme référence, un std::string pour un nom et et... ah, un pointeur pour l'élément suivant.

 

:o

 

Sinon, sérieusement,  t'as bien fait attention à initialiser tout tes pointeurs à NULL (0) ? Fais-le si tu l'a fait, comme ça s'il te dit adresse invalid at 0, c'est que t'accède à un pointeur non-initialisé. Sinon, ptet un free() mal placé, faut toujours pensé que un pointeur qui pointe sur rien -> on le met à 0

 

Après on peut pas dire sans voir ton code :D


Message édité par Terminapor le 29-03-2012 à 12:31:02

---------------
Perhaps you don't deserve to breathe
n°2133686
gilou
Modérateur
Modzilla
Posté le 29-03-2012 à 12:32:47  profilanswer
 

lebron54 a écrit :

j'ai posté l'eesentiel

Non, parce que typiquement, c'est un message causé par une libération mémoire mal faite, et sans le code, comment veux tu qu'on sache comment c'est mal libéré et ou...
A+,
 


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  strcat

 

Sujets relatifs
pb avec les char et strcatPetit soucis avec strcat
[C] Boucle avec strcat pour créer plusieurs fichiers( N * fprintf ) ou ( N * strcat + fprintf ) ?
Problème de débutant avec strcatfgets et strcat
Ya pas mieux qu'une suite de strcat ?De l'inutilité de la valeur de retour de strcat/strcpy
équivalent de strcat de C++ en PHP ?[C] - Prob avec strcat() [résolu]
Plus de sujets relatifs à : strcat


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR