Problème avec char et strcat en c
pupuce86
Messages postés
5
Date d'inscription
Statut
Membre
Dernière intervention
-
pupuce86 Messages postés 5 Date d'inscription Statut Membre Dernière intervention -
pupuce86 Messages postés 5 Date d'inscription Statut Membre Dernière intervention -
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
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
A voir également:
- Problème avec char et strcat en c
- Coco char - Accueil - Réseaux sociaux
- Remplaçant de Coco : quelles solutions pour tchater gratuitement en ligne ? - Accueil - Réseaux sociaux
- Convertir char en int c ✓ - Forum C
- If char ✓ - Forum Programmation
- Conversion int to char en C - Forum C
6 réponses
Bonjour,
Mype a été plus rapide que moi, moi non plus je ne comprends pas très bien ce que tu veux faire, ton code est assez surprenant. Tu l'as fait tourner ?
Mype a été plus rapide que moi, moi non plus je ne comprends pas très bien ce que tu veux faire, ton code est assez surprenant. Tu l'as fait tourner ?
en fait j'ai fais 2 fonctions, la 1ere qui doit initialiser un tableau avec une chaine de caractere = "" et la 2ème fonction qui doit rajouter "1" à la moitié du tableau et "0" a la 2eme moitié. le probleme c'est que quand j'utilise un p[ ] dans la 1ère fonction lors de l'affichange chaque case a 6 valeurs "000111" alors qu'elle devrait en avoir qu'une, ou la valeur"1" ou la valeur"0". donc j'ai fais un test et j'ai essayé avec un p2 [] (que j'ai initialisé a "2") et dans cette case j'obtiens bien ce que je veux. Dans mon programme normalement je devrais avoir 256 cases. Mais comme je peux pas faire 256 p[]
Le but de la fonction c'est donc que je passe un tableau et il rajoute un "1" a la moitié du tableau et un "0"
a la 2eme moitié. cette fonction sera appelé par une autre fonction qui l'appellera avec la moitié du tableau. c'est a dire a chaque fois on divise le tableau en 2 et on rajoute des "1" et des "0".à la fin dans chaque case je dois avoir des chaines de binaires. par dans la 1ere case du tableau "0001" .j'ai mis [2560] car quand j'ai testé avec [256] il m'
affiché des erreur de segmentation. ( je sais pas pour quoi )
J'espère que c'est un peu plus claire maintenant
est ce que vous pouvez m'aider s'il vous plait car je suis bloquée.
je vous remercie pour votre réponse
ps:le but ultime de mon programme(qui comporte d'autres fonctions)est de réaliser la compression et la décompression
selon la méthode de shannon fano.
Le but de la fonction c'est donc que je passe un tableau et il rajoute un "1" a la moitié du tableau et un "0"
a la 2eme moitié. cette fonction sera appelé par une autre fonction qui l'appellera avec la moitié du tableau. c'est a dire a chaque fois on divise le tableau en 2 et on rajoute des "1" et des "0".à la fin dans chaque case je dois avoir des chaines de binaires. par dans la 1ere case du tableau "0001" .j'ai mis [2560] car quand j'ai testé avec [256] il m'
affiché des erreur de segmentation. ( je sais pas pour quoi )
J'espère que c'est un peu plus claire maintenant
est ce que vous pouvez m'aider s'il vous plait car je suis bloquée.
je vous remercie pour votre réponse
ps:le but ultime de mon programme(qui comporte d'autres fonctions)est de réaliser la compression et la décompression
selon la méthode de shannon fano.
ok j'ai mieux compris ce que tu veux faire...
essaye ça
essaye ça
#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=' '; for(i=0; i<taille; i++){ *tab[i] =p; } } void codage(){ char *tab[2560]; int i,j; int k=3; char zero='0'; char un='1'; for(i=0;i<2560;i++) tab[i]=(char *) malloc(100*sizeof(char)); initialisation(tab,6); for(i=0; i<k ; i++){ *tab[i]= zero; } for(j=k; j < 6 ;j++){ *tab[j]= un; } for(i=0;i<6;i++){ printf("%c",*tab[i]);} printf("\n"); } int main (int argc, char ** argv){ codage(); return (EXIT_SUCCESS); }
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
il vaut mieux que tu repondes sur le forum pour que tous le monde puisse profiter...
puisque dans chaque case tu doit avoir une chaine
essaye ça
pour ton probleme d'erreur de segmentation quand tu declares ton tableau en variable globale c'est surement parce que tu utilises un tableau dynamique mais tu ne lui alloue pas de memoire il faut que tu utilises des malloc...
puisque dans chaque case tu doit avoir une chaine
essaye ça
#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]=""; for(i=0; i<taille ; i++){ tab[i] =p; } } void codage(){ char *tab[2560]; int i,j; int k=3; char *zero="0"; char *un="1"; for(i=0;i<2560;i++) tab[i]=(char *) malloc(100*sizeof(char)); initialisation(tab,6); for(i=0; i<k ; i++){ tab[i]=zero; } for(i=k; i < 6 ;i++){ tab[i]=un; } for(i=0;i<6;i++){ printf("%s\n",tab[i]);} } int main (int argc, char ** argv){ codage(); return (EXIT_SUCCESS); }
pour ton probleme d'erreur de segmentation quand tu declares ton tableau en variable globale c'est surement parce que tu utilises un tableau dynamique mais tu ne lui alloue pas de memoire il faut que tu utilises des malloc...