pb avec les char et strcat - C - Programmation
Marsh Posté le 22-04-2008 à 16:14:20
Je crois que la fonction qui t'aiderais s'apelle malloc().
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
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 :
|
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.
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