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:
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;
}
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.
Qualcuno ha qualche idea? Grazie in anticipo.