2012-01-16 42 views
1

我试图从十进制数转换成二进制数。C语言,运行失败,十进制为二进制

你有什么想法为什么我有一个“运行失败”? (我认为我的scanf函数附近有错误)。

P.S:我知道这个程序的算法还没有工作,但我想先尝试编译。但我打开的任何建议^^

#include <stdio.h> 
    #include <stdlib.h> 
    #include <math.h>   

/** 
* Uebung 1.3 - C Teil 
* Programm, welches eine Integer-Zahl in Binärdarstellung ausgibt. 
*/ 

#define DEBUG 1 

/** Structure of a binary Value */ 
typedef struct{ 
    int size; 
    int* valueInBin; 
    int valueInDec; 
}Wert; 

/** Global variables */ 
//nothing 

/** Functions declarations */ 
void iToBinary(Wert* w); 
void printBinaryValue(Wert w); 

/** Main function */ 
int main(int argc, char** argv) { 

    /* Local variable*/ 
    Wert myVal; 

    printf("Wert als Integer (auch negativ): "); 
    scanf("%d", &(myVal.valueInDec)); 
    DEBUG ? printf("Mein Wert : %i", myVal.valueInDec):printf(""); 
    myVal.size = sizeof(int)*8; 
    DEBUG ? printf("size: %i", myVal.size):printf(""); 

    iToBinary(&myVal); 

    printBinaryValue(myVal); 

    return (EXIT_SUCCESS); 
} 

void iToBinary(Wert* w){ 

    int i,temp = w->valueInDec; 

    w->size = sizeof(w->valueInDec)*8; 

    w->valueInBin = (int*) malloc(sizeof(int) * (int)(w->size)) ; 

    for(i=w->size-1; i>=0; i++){ 
     if(temp > pow(2,i)){ 
      *((w->valueInBin)+i) = 1; 
     } 
     else{ 
      *((w->valueInBin)+i) = 0; 
     } 
    } 
} 

void printBinaryValue(Wert w){ 
    unsigned int i; 

    printf("My int in bin : "); 
    for(i=0; i<w.size; i++){ 
     printf("%i",(*(w.valueInBin)+i)); 
    } 
} 
+3

你应该为这个问题添加一个“家庭作业”标签。此外,有关错误的更多细节。您是否看到除“运行失败”以外的其他问题? –

+0

什么是编译错误? –

+0

没有编译错误,当我执行代码时只是一个“运行失败”:Wert als Integer(auch negativ):2 RUN FAILED(退出值1,总时间:5秒) – KeyMaker00

回答

3

的这是你的问题:

你的确在一个无限循环。将i++更改为i--

您的代码在函数iToBinaryprintBinaryValue中也包含一些错误。尝试捕捉错误!

顺便说一句,递归函数可以做得更好!如果你没有任何限制,不妨考虑一下。

+0

不错!谢谢FlopCoder! – KeyMaker00

+0

嗯我承认我没有看到我的错误在iToBinary和printBinaryValue:s – KeyMaker00

+0

哦,你是对的,递归函数可以更好! (我甚至没有想过!) – KeyMaker00

相关问题