PDA

Visualizza la versione completa : [C] Il programma termina sempre alla stessa istruzione senza motivo.


StartingToDive
16-01-2014, 19:04
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:


//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.

Scara95
16-01-2014, 19:56
Devi allocare lo spazio per la stringa se poi vuoi modificarla...
Nel main

//...
char num[65];
strcpy(num, "11011101");
printf("%d", convertiBin(num));
//...

Inoltre dovresti includere gli header necessari (nel caso string.h e stdio.h)

Loading