C 二进制到整数,需要对这种方法提出建议。

C 二进制到整数,需要对这种方法提出建议。,c,C,所以我在做一个作业,我必须执行不同的运算,但不使用标准的算术运算。任务的一部分是将用户输入的二进制整数转换为标准可读格式 因此,如果用户输入0111,我必须返回7 我的问题是,如何将输入拆分为单独的值,然后将它们存储在数组中?我不能使用标准操作数,但我有为加法、减法和乘法编写的函数 因此,我想做的是将整数的每个值设置为一个数组,然后将其反转,然后在while循环中,通过将给定的0或1乘以相应的二次幂,然后将所有值相加来转换这些值。将其作为字符串扫描。它有一个很好的优势,即已经是一个数组: cha

所以我在做一个作业,我必须执行不同的运算,但不使用标准的算术运算。任务的一部分是将用户输入的二进制整数转换为标准可读格式

因此,如果用户输入0111,我必须返回7

我的问题是,如何将输入拆分为单独的值,然后将它们存储在数组中?我不能使用标准操作数,但我有为加法、减法和乘法编写的函数


因此,我想做的是将整数的每个值设置为一个数组,然后将其反转,然后在while循环中,通过将给定的0或1乘以相应的二次幂,然后将所有值相加来转换这些值。

将其作为字符串扫描。它有一个很好的优势,即已经是一个数组:

char  input[33];
scanf("%s",input);
这将为您提供一个字符数组。它们不是整数,这可能是您想要的。可以使用字符算术将其转换为整数数组,每次一个字符:

array[i] = input[i] - '0';

当输入[i]为0(即字符串的结尾)时,必须停止。如果您想先使用低阶位,您可以反转数组。

这似乎是一个非常合理的方法,您的问题是什么?我最近刚开始使用C,所以整个指针的情况仍然让我很困惑。我一直在获取地址,而不是给定索引处的整数值@pankratesscanf(“%u”,&day);int数组[5];数组[5]=日期;printf(“%d”,数组[0]);最后给我地址如果你对实现的实际代码有问题,发布你的代码和你在itRemember上遇到的具体问题,记住用户是敌对的;他们会试图破坏你的程序。您可能还不太担心这个问题—您首先需要解决其他问题—但最终,您将要求用户提供适当长度的数据,但您的代码将处理他们提供给您的任何数据,并且不会崩溃或损坏任何重要数据。(它可以拒绝它,但不应该崩溃。)scanf(“%u”,&day);最初是作为获取输入的方式提供的,它的“%u”这一事实会改变什么吗?%u是无符号十进制整数。因此,如果0111被输入,它将被读取为111(111)。这是一个很难开始的地方。所以我不能采取这种方法,因为我得到了一个冲突的类型错误?我似乎无法设置数组,因为它是无符号的。您的意思可能是“当
输入[I]='\0'
-
'0'
不是字符串的结尾,它(可能)是字符串的一部分时停止”。我说的是0,不是“0”。0=='\0