Salve a tutti, devo realizzare una funzione che ricevuta una stringa rappresentante un numero in binario(in complemento a due) restituisca il valore intero, ma il programma termina sempre quando arriva a una precisa istruzione(Un assegnamento, è evidenziato nel codice). Non ho proprio idea di come fare per risolvere il problema.
Ecco il codice:
Come ho già detto sopra, non ho proprio idea del motivo per cui ciò accada, mi sembra davvero strano che il programma termini ad un assegnamento, eppure ho fatto il debug decine di volte o sempre quando arrivo all'istruzione segnalata e faccio step into, la prima volta non succede niente, rifaccio step into e il programma termina.codice://Primo file, un header. #ifndef PROTOTIPI_H_ #define PROTOTIPI_H_ int convertiBin(char*); //Funzione che converte la stringa in intero #endif //Secondo file, implementazione della funzione, QUI C'È L'ISTRUZIONE CHE DA PROBLEMI int convertiBin(char*bin){ int i=0, negative=0, num=0; if(bin[i]=='1'){ negative=1; while(bin[i]!='\0'){ if(bin[i]=='1') bin[i++]='0'; // <----OGNI VOLTA CHE VIENE ESEGUITA QUESTA ISTRUZIONE IL else //PROGRAMMA TERMINA bin[i++]='1'; } i--; do{ if(bin[i]=='0') bin[i--]='1'; else bin[i--]='0'; }while(bin[i+1]=='0' && i>=0); } for(i=0; bin[i]!='\0'; i++) if(bin[i]!='0') num+=pow(2, strlen(bin)-1-i); if(negative) return -num; else return num; } //Terzo file, contiene il main di prova(La stringa che passo è un esempio a caso) int main(){ printf("%d", convertiBin("11011101")); return 0; }
Qualcuno ha qualche idea? Grazie in anticipo.

Rispondi quotando
