Salut !

J'ai un ptit bug qui me casse la tete depuis 2 jours..
Je dois mal maitriser le read et les chaines de caracteres...

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
   
GSList * neighbList = NULL; 
int i, nbOct; 
char * ip = g_malloc0(6); 
char * ret;     

while((nbOct = read(0, ip, 4)) != 0) {
     if(nbOct == 4) {        
         printf("%s -- %c - %c\n", ip, ip[0], ip[3]);
         neighbList = g_slist_prepend(neighbList, ip);
     }
     else break;
}

for(i=0 ; (ret = g_slist_nth_data(neighbList, i)) != NULL ; ++i) {
     printf("%c - %c -- %s\n", ret[0], ret[1], ret);
 }
les printf sont la pour le test

le but et de recevoir une chaine par exemple : aaaabbbbcccc
et d'ajouter dans la liste chainée aaaa, puis bbbb, puis cccc, etc..

(et de recuperer ses infos apres...)

Le premier printf (avant l'ajout) se comporte exactement comme je veux.

par contre, celui apres l'ajout est tres bizarre, en effet, chacune des chaines recues ont un \n en premier caractere, puis les 3 caracteres de la derniere chaine ajoutée... :s

une idée silvouplé ? (désolé pour l'utilisation de la glib qui va surement pas plaire ...)

a+