begin process at 2012 05 28 11:59:59
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Algorithme

 > 

Maths

 > 

Aider moi : Probléme d'allocation dynamique


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Aider moi : Probléme d'allocation dynamique

dimanche 10 décembre 2006 à 18:57:23 | Aider moi : Probléme d'allocation dynamique

Vie2006

Bonjour tout le monde
J'ai un prbleme qui me bloque ca fait un bout de temps. En fait, je veux declarer un tableau de chaine de caractéres et le remplire. Pour ce la j'utilise une boucle. Cepenadant toutes les cases du tableau ne contiennent que la derniere chaine entrées. Voila mon code.

  char     **colname = NULL; // Nom de chaque vraibles (xi ou Lamda_i)
 colname = (char *) malloc (NUMCOLS * sizeof(char));

k=0;
 for(j=0;j<D->Nbr_colones; j++)
 { 
  for(i=0;i<D->Card_Article; i++)
  {   
      sprintf(c1,"%d",i);
      sprintf(c2,"%d",j);
      strcpy(C,"Lamda");
      strcat(C,c1);strcat(C,c2);
      colname[k] = (char*)malloc(strlen(C)+1);
     colname[k] =  C;
  
   k++;
  }
 }

dimanche 10 décembre 2006 à 19:08:43 | Re : Aider moi : Probléme d'allocation dynamique

SAKingdom

Membre Club
...
strcat(C,c1);strcat(C,c2);
colname[k] = (char*)malloc(strlen(C)+1);
strcpy(colname[k], C);
...

C++ (@++)

dimanche 10 décembre 2006 à 19:09:45 | Re : Aider moi : Probléme d'allocation dynamique

julienbj

Réponse acceptée !
 char     **colname = NULL; // Nom de chaque vraibles (xi ou Lamda_i)
 colname = (char *) malloc (NUMCOLS * sizeof(char *));

k=0;
 for(j=0;j<D->Nbr_colones; j++)
 { 
  for(i=0;i<D->Card_Article; i++)
  {   
      sprintf(c1,"%d",i);
      sprintf(c2,"%d",j);
      strcpy(C,"Lamda");
      strcat(C,c1);strcat(C,c2);
      colname[k] = (char*)malloc(strlen(C)+1);
     colname[k] =  C;strcpy(colname[k], C); //colname[k] est de type char*
  
   k++;
  }
 }

A premiere vue, je ne vois que ca.

Vive le C
Savon

dimanche 10 décembre 2006 à 19:12:55 | Re : Aider moi : Probléme d'allocation dynamique

Vie2006

Oui, j ai essayer sauf que ca me donne un bogue en arriavant a strcpy(colname[k], C);
dimanche 10 décembre 2006 à 19:19:52 | Re : Aider moi : Probléme d'allocation dynamique

julienbj


Tu as bien changé le char* en haut?

Sinon, en moins "barbare":
char     **colname = NULL; // Nom de chaque vraibles (xi ou Lamda_i)
colname = (char *) malloc (NUMCOLS * sizeof(char*));

k=0;
 for(j=0;j<D->Nbr_colones; j++)
 { 
  for(i=0;i<D->Card_Article; i++)
  {  
       sprintf(C, "Lambda%d%d", i, j); //Ca c'est parcque je suis faineant, mais tu devrais eviter sprintf, c'est vraiment la grosse artillerie pour pas grand chose!!!
       colname[k] = (char*)malloc(strlen(C)+1);
       colname[k] =  C;
       k++;
  }
 }

Une petite question quand meme: Tu peux nous donner les valeurs de NUMCOLS, D->Nbr_colones, D->Card_Article?

Vive le C
Savon

dimanche 10 décembre 2006 à 19:27:00 | Re : Aider moi : Probléme d'allocation dynamique

SAKingdom

Membre Club
Tu refais la même erreur:

colname[k] = (char*)malloc(strlen(C)+1);
colname[k] =  C;
strcpy(colname[k], C);

Moi, je serais interessé de savoir quel est le bug en question (messages d'érreur, réaction du programme etc.) et ce que vaut C (c'est quoi, un tableau?)


C++ (@++)

dimanche 10 décembre 2006 à 19:28:34 | Re : Aider moi : Probléme d'allocation dynamique

Vie2006

En fait,  j'ai oublier de changer le char* en haut. Mais un fois je l 'avais changer, ca marche à merveill. Merci les amis, merci beaucoup. 
dimanche 10 décembre 2006 à 19:36:12 | Re : Aider moi : Probléme d'allocation dynamique

julienbj


désolé SAKingdom, j'ai betement copie coller ce qu'il avait écrit lors de mon second post :(
Honte à moi ;)

Le bug venait bien du char*.
sizeof(char)=1 tandis que sizeof(char*)=4.
Donc pas la meme quantité de mémoire allouée evidemment et au bout d'un moment, on déborde.

Vive le C
Savon

dimanche 10 décembre 2006 à 19:49:01 | Re : Aider moi : Probléme d'allocation dynamique

SAKingdom

Membre Club
Aille. J'avais pas vue ce petit détail :(

C++ (@++)

dimanche 10 décembre 2006 à 20:31:38 | Re : Aider moi : Probléme d'allocation dynamique

Joky

Membre Club
#include <windows.h>
#include <stdio.h>

#define NUM        10
    
int main ()

    char **tabOfStr = NULL;
    char Buff[255];
    int i;

    tabOfStr = (char**)malloc(NUM * sizeof(char*));
   
    for (i=0; i<NUM; i++)
    {
          memset(Buff, 0, 255);
          fflush(stdin);
          printf("Entrer une chaine : ");
          scanf("%s", Buff);
          
          tabOfStr[i] = (char*)malloc(strlen(Buff) * sizeof(char));
          strcpy(tabOfStr[i], Buff);
   }
  
   for (i=0; i<NUM; i++)
          printf("Chaine %i : %s\n.", i, tabOfStr[i]);
     
    system("pause");     
   return 0;
}


ULARGE_INTEGERJokyQi=QI("Joky"


1 2

Cette discussion est classée dans : aider, char, probléme, colname, allocation


Répondre à ce message

Sujets en rapport avec ce message

Probleme d'Allocation [ par oliverman ] Je pense avoir un petit probleme d'allocation avec mes fonction:Si je fais :char * fonction ( int SIZE){char *buff;buff =new char[SIZE];//(char = 1oct pionteur [ par lilington ] Salut j'ai un petit problème avec l'allocation dinamique sur VC++ 6je cherche la correspondance entre "malloc" et "new"voilà la l'allocation que je ve allocation efficace de memoire [ par gildaso ] Salut à tous! Alors voila je suis en licence d'informatique et j'ai un projet à rendre  pour la mi-mai.Ce projet consiste à implementer en c un system Probléme allocation mémoire! avec un void [ par psyko_flex ] Voila je dois controler un bandeau lumineux, voila mon probléme,c'est avec la variable TrameRecue!! je la récupére de la fonction ReceptionCom( ); mai f print allocation de memoir [ par sodival ] /* Je souhaiterai écrire le contenu texte d'une variable char dans un fichier, comment faire ?J'ai pri ce code, mais il me comble les espaces non ecri Bug avec la fonction new [ par Tobii ] Voila ce que j'ai tapé et compilé sous visual studio :char** AllouerMaj(int w, int h){       char** MAJ= new char*[w*h];        for(int l=0; l         probléme de conversion un chaine AnsiSitring en une chaine char [ par freem1 ] je programme en c++ builder 6 et il ya un probléme au niveau de la conversion code:[char cl[16];cl = Edit2->Text.c_str();]</font probleme d'allocation [ par littledrummer ] bonjour à tous.J'ai un petit souci avec une allocation mémoire lorsque j'execute le code suivant:string nomfichier="";cin>>nomfichier;<fon !!! Pb d'allocation mémoire !!! [ par yoyo269 ] Bonjour à tous !Comme le titre l'indique, j'ai un petit souci avec l'allocation de mémoire.En fait j'ai un char*, auquel j'applique un malloc. Ensuite probléme de char [ par boss59840 ] voila je voudrais savoir comment avec la fonction "char" mettre un "scanf " ou l'utilisateur entrera un mot pour en faire resortir une phrases  cordia


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,343 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales