Ciao
Sto scrivendo un programma, ma arrivato ad un certo punto esso fa cose inappropriate. Da ciò che sono riuscito a capire usando il debugger GDB, questo comportamento anormale è dovuto, molto probabilmente, ad una funzione che chiamo nella funzione principale, ovvero compare(), la quale "modifica", in un certo senso, il comportamento della stringa _ipstr che le passo quando questa successivamente interagisce in altri modi nel programma. In particolare, quando faccio il debug del mio programma, passo-passo, con GDB, e arrivato al punto di compare(), se premo s (il comando skip), GDB non accede alla funzione e non continua neance il debug riga per riga, bensì fa continuare il programma da solo fino alla fine.
Ecco il codice di compare(), se vi dovessero essere dei problemi:
codice:
int compare(char *_ipstr, char *_filename)
{
char _ipbuf[IPBUFSIZ+1];
while (1) {
if (fgets(_ipbuf, IPBUFSIZ+1, list) != NULL) {
if (!strcmp(_ipbuf, _ipstr))
return -1;
} else if (ferror(list)) {
fprintf(stderr, "Cannot read %s.\n", _filename);
exit(2);
} else
return 0;
}
}
Ultimi chiarimenti: uso Linux, con compilatore GCC (ho specificato l'opzione -g per il debug). Quest'ultimo non mi dà nessun errore nella compilazione, e tra l'altro ho già testato le altre parti del programma (tra cui l'integrità del file segnato da list), che sono a posto. IPBUFSIZ nel programma ha valore 15.