pb avec les char et strcat

pb avec les char et strcat - C - Programmation

Marsh Posté le 22-04-2008 à 15:27:45    

salut à tous.
j'ai des problèmes avec les "char" . en fait je voulais faire une fonction qui initialise un tableau avec "" . Mais le problème c'est que quand j'utilise un seul p[ ] , dans ma 2ème fonction quand je modifie une case toutes les cases sont modifiées .J'ai essayé de faire avec un p2[ ] et là il modifie qu'un seule case. Mais comment je peux faire pour initialisé mon tableau ??car normalement je devrais avoir un tableau de 256 cases. car je peut pas faire de p[ ] a p256 [ ]. si qq1 pourrai m'aider car je vois vraiment pas comment faire
je vous remercie d'avance :)  
 
voici le code :
Code :
 
 
#include <stdio.h>
#include <math.h>
#include <string.h>
#include <sys/types.h>
#include <unistd.h>
#include <fcntl.h>
#include <errno.h>
#include <stdlib.h>
#include<sys/stat.h>
 
void initialisation(char *tab[],int taille){
 
int i;
char p[2560]="";
char p2[2560]="2";
for(i=0; i<taille-1 ; i++){
tab[i] =p;
}
tab[taille-1] =p2;
}
 
void codage(){
char *tab[2560];
int i,j;
int k=3;
char *zero="0";
char *un="1";
 
initialisation(tab,6);
for(i=0; i<k ; i++){
 
tab[i]= strcat( tab[i] ,zero);
}
for(j=k; j < 6 ;j++){
 
tab[j]=strcat( tab[j],un);
}
for(i=0;i<6;i++){
printf("%s\n",tab[i]);
}
}
 
int main (int argc, char ** argv){
 
codage();
 
return (EXIT_SUCCESS);
 
}
 
 
et le resultat :
Code :
 
 
00011
00011
00011
00011
00011
21

Reply

Marsh Posté le 22-04-2008 à 15:27:45   

Reply

Marsh Posté le 22-04-2008 à 16:14:20    

Je crois que la fonction qui t'aiderais s'apelle malloc().

Reply

Marsh Posté le 22-04-2008 à 16:16:35    

est ce que tu pourrais me dire s'il te plait comment utiliser cette fonction dans mon programme car là je t'avoue que je suis un petit peu perdue

Reply

Marsh Posté le 22-04-2008 à 17:33:12    

Oué, s'il n'y a que cette fonction à t'expliquer, ça serait encore trop simple. Il faudrait déjà que tu comprennes pourquoi ce morceau de ton code est archi faux (avec droit à un postage direct sur dailywtf si trouvé en prod) :

Code :
  1. void initialisation(char *tab[],int taille)
  2. {
  3.    int i;
  4.    char p[2560]="";
  5.    char p2[2560]="2";
  6.    for(i=0; i<taille-1 ; i++){
  7.      tab[i] = p;
  8.    }
  9.    tab[taille-1] =p2;
  10. }


 
Tu retournes un tableau local à la fonction appelante. As-tu conscience que la durée de vie de p et p2 n'est garantie que dans le bloc ou ces tableaux sont déclarés ? Sans parler du fait que tu réutilises taille-1 fois le même buffer. Pas étonnant que tu retrouves taille-1 la même chaine par la suite.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed