使用c ....中的字符串将十进制转换为二进制...陷入某些概念错误

阿尔萨夫
#include<stdio.h>

char bin(int);

int main()
{
    setbuf(stdout,NULL);
    int num;
    char res[50];
    printf("Enter the number: ");
    scanf ("%d",&num);
    res=bin(num);
    printf("%s",res);
    return 0;
}

char bin(int num)
{
    char str[50];
    int i,val;
    for(i=0;num>=0;i++)
    {
        val=num%2;
        str[i]=val;
        num=num/2;
    }
    return str;
}

我真的无法理解字符串使用中的错误...将十进制转换为二进制。我没有遵循的概念错误是什么?

阿纳斯塔丘

返回str等于返回局部变量,您不能这样做,可以做的是返回一个指针,该指针指向先前分配的作为数组工作的内存块(作为其他答案的替代方法,这是一个很好的解决方案) 。

为此,您可以声明str为一个指针,为其分配内存并返回它,确保分配了该值的变量也是一个指针,其余所有都可以保持不变。


但是,该bin功能存在问题

  • 考虑以下语句:
   str[i] = val;

在分配int操作结果(将其为1或0)时,这将无法正常工作,您需要将此值转换为相应的字符。

  • 该循环for (i = 0; num >= 0; i++)是一个无限循环,因为它num永远不会为负,除非您为其提供负数,否则它将在第一次迭代中中断,也就是说,此代码仅适用于正整数您需要>代替>=

  • 最后,转换完成后,您需要使字符串终止为空。

更正的代码(在线):

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

char *bin(int); //return pointer

int main() {
    setbuf(stdout, NULL);
    int num;
    char *res; //use pointer to receive string assignment
    printf("Enter the number: ");
    scanf("%d", &num);
    res = bin(num);
    printf("%s", res);
    return 0;
}

char *bin(int num) {
    char *str = malloc(50); // allocate memory
    int i, val;

    for (i = 0; num > 0; i++) { // replacing >= with >
        val = num % 2;
        str[i] = val + '0'; // convert to character
        num = num / 2;
    }
    str[i] = '\0'; //null terminate the string
    return str;
}

请注意,您还应该检查输入的值,如果该值大于int变量可以容纳的值,则将导致不确定的行为。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将十进制转换为二进制的C ++程序出现分段错误

来自分类Dev

将十进制转换为二进制错误(C)

来自分类Dev

Arduino C / C ++将二进制字符串转换为十进制

来自分类Dev

C ++从字符串输入将二进制转换为十进制

来自分类Dev

将二进制字符串转换为十进制时结果错误

来自分类Dev

使用递归将二进制数字的字符串转换为十进制数字...

来自分类Dev

使用递归将二进制数字的字符串转换为十进制数字...

来自分类Dev

为什么将十进制转换为二进制的递归方法比使用,返回字符串的迭代方法要快?

来自分类Dev

为什么将十进制转换为二进制的递归方法比使用,返回字符串的迭代方法要快?

来自分类Dev

使用python中的函数将十进制数转换为二进制数

来自分类Dev

二进制字符串到c中的十进制数

来自分类Dev

使用 java 错误的十进制到二进制转换

来自分类Dev

需要帮助将二进制数转换为C中的字符串

来自分类Dev

如何将十进制转换为二进制C#(4位)

来自分类Dev

将十进制数转换为二进制Objective-C

来自分类Dev

C将十进制scanf输入转换为二进制数组

来自分类Dev

将十进制转换为二进制的C ++循环的逻辑是什么

来自分类Dev

c++ 将十进制数转换为二进制数

来自分类Dev

使用python可视化将十进制转换为二进制

来自分类Dev

如何使用for循环将二进制转换为十进制?

来自分类Dev

使用CharAt()和length()将二进制转换为十进制

来自分类Dev

如何使用<bitset>库将二进制转换为十进制?

来自分类Dev

如何使用递归函数将十进制数转换为二进制数?

来自分类Dev

将十六进制字符串转换为二进制并使用netcat发送

来自分类Dev

使用字符串将二进制转换为八进制

来自分类Dev

C ++-将字符串二进制链转换为int二进制链

来自分类Dev

在C ++中从二进制转换为十进制数

来自分类Dev

如何通过使用python中的重复除法将十进制转换为二进制

来自分类Dev

如何在Java中从二进制转换为十进制(使用android studio)

Related 相关文章

  1. 1

    将十进制转换为二进制的C ++程序出现分段错误

  2. 2

    将十进制转换为二进制错误(C)

  3. 3

    Arduino C / C ++将二进制字符串转换为十进制

  4. 4

    C ++从字符串输入将二进制转换为十进制

  5. 5

    将二进制字符串转换为十进制时结果错误

  6. 6

    使用递归将二进制数字的字符串转换为十进制数字...

  7. 7

    使用递归将二进制数字的字符串转换为十进制数字...

  8. 8

    为什么将十进制转换为二进制的递归方法比使用,返回字符串的迭代方法要快?

  9. 9

    为什么将十进制转换为二进制的递归方法比使用,返回字符串的迭代方法要快?

  10. 10

    使用python中的函数将十进制数转换为二进制数

  11. 11

    二进制字符串到c中的十进制数

  12. 12

    使用 java 错误的十进制到二进制转换

  13. 13

    需要帮助将二进制数转换为C中的字符串

  14. 14

    如何将十进制转换为二进制C#(4位)

  15. 15

    将十进制数转换为二进制Objective-C

  16. 16

    C将十进制scanf输入转换为二进制数组

  17. 17

    将十进制转换为二进制的C ++循环的逻辑是什么

  18. 18

    c++ 将十进制数转换为二进制数

  19. 19

    使用python可视化将十进制转换为二进制

  20. 20

    如何使用for循环将二进制转换为十进制?

  21. 21

    使用CharAt()和length()将二进制转换为十进制

  22. 22

    如何使用<bitset>库将二进制转换为十进制?

  23. 23

    如何使用递归函数将十进制数转换为二进制数?

  24. 24

    将十六进制字符串转换为二进制并使用netcat发送

  25. 25

    使用字符串将二进制转换为八进制

  26. 26

    C ++-将字符串二进制链转换为int二进制链

  27. 27

    在C ++中从二进制转换为十进制数

  28. 28

    如何通过使用python中的重复除法将十进制转换为二进制

  29. 29

    如何在Java中从二进制转换为十进制(使用android studio)

热门标签

归档