Vie2006
Messages postés15Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention20 février 2007
-
13 janv. 2006 à 01:09
Vie2006
Messages postés15Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention20 février 2007
-
13 janv. 2006 à 19:29
je fais un programme en C. je dois rempire une tabeleau de caractere (une chaine).
Mais à la fin, je me trouve avec la meme chaine de caracteres dans chaque cases.
SVP aidez moi. Voici mon programme.
char *colname[100];
char c1[10];
char c2[10];
char C[20];
int i,j;
ymca2003
Messages postés2070Date d'inscriptionmardi 22 avril 2003StatutMembreDernière intervention 3 juillet 20067 13 janv. 2006 à 03:50
c'est normal,
char *colname[100];
=> déclare un tabeau de 100 pointeurs vers des chaînes.
colname[k]=C;
=> chaque case pointera vers la même chaîne C.
comme C est écrasée à chaque tour, ton tableu contiendra 100 pointeurs identiques vers C dont le contenu sera
celui de la dernière boucle.
pour y remédier, 2 solutions :
1) déclarer le tableau comme cela :
char colname[100][30];
et faire
strcy(colname[k], C);
2) garder la même déclaration de tableau mais allouer dynamiquement les chaînes :
colname[k] = (char*)malloc(strlen(C)+1);
strcy(colname[k], C);
Ne pas oublier de faire free sur chaque élément à la fin.
BunoCS
Messages postés15472Date d'inscriptionlundi 11 juillet 2005StatutModérateurDernière intervention25 mars 2024103 13 janv. 2006 à 09:37
Si je puis me permettre, ceci serait plus rapide:
sprintf(colname[k],"Lambda%d%d", i, j);
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Le site de mon mariage