Parseur de commentaire '#'

Parseur de commentaire '#' - ASM - Programmation

Marsh Posté le 20-03-2009 à 10:26:00    

Bonjour,
je dois parser un fichier assembleur (.s).
Il y aura surement des commentaires.

 

Mon fichier est placer dans un tableau qui change de ligne a chaque '\n' croiser.
Mon probleme est le suivant, lorsque je lui dis

 


 while (i < strlen(str))                                        
    {                                                                
      size_word = word(str, i);                                      
      tab[alloc] = malloc((size_word + 1) * sizeof(**tab));          
      j = 0;                                                          
      while (str[i] != '\0' && str[i] != '\n')                        
        {                                                            
          if (str[i] == '#')
             alloc++;
         tab[alloc][j] = str[i];                                    
          i++, j++;                                                  
        }                                                            
      printf("%s\n", tab[alloc]);                                    
      tab[alloc][j] = '\0';                                          
      i++, alloc++;                                                  
    }                          

 

Le programme me pete un segfault...j'aurais donc bien parser differement mon fichier, mais je vois pas comment l'epurer de tout commentaire.

 

Si quelqu'un a une idee ^^

 

Merci


Message édité par leoz2004 le 20-03-2009 à 10:26:31

---------------
Worldcraze 10loop
Reply

Marsh Posté le 20-03-2009 à 10:26:00   

Reply

Marsh Posté le 20-03-2009 à 10:56:42    

Tu m'as l'air d'avoir plus un probleme de C que d'assembleur.
 
Tu fais un alloc++ puis tu modifies tab[alloc] sans l'avoir jamais alloue.
 
(J'ai pas cherche apres d'autres problemes, je ne suis pas sur de comprendre ta logique).


Message édité par Un Programmeur le 20-03-2009 à 10:57:10
Reply

Marsh Posté le 20-03-2009 à 10:58:44    

La taille allouée est trop petite.
 
Comment est déclaré tab?
char **tab;
 
Que vaut size_word ?
C'est impossible à dire sans voir plus de code.
 
Que vaut sizeof(**tab) ?
Ca vaut la taille d'un pointeur, donc 4 octets en mode 32-bit.
 
Que contient alloc ?
 
Peut-être qu'il faudrait réinitialiser j quand on trouve #.

Reply

Sujets relatifs:

Leave a Replay

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