Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    [C] Il programma termina sempre alla stessa istruzione senza motivo.

    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.
    Ultima modifica di StartingToDive; 16-01-2014 a 20:05 Motivo: Mancava un informazione

  2. #2
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,589
    Devi allocare lo spazio per la stringa se poi vuoi modificarla...
    Nel main
    codice:
    //...
    char num[65];
    strcpy(num, "11011101");
    printf("%d", convertiBin(num));
    //...
    Inoltre dovresti includere gli header necessari (nel caso string.h e stdio.h)
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.