我必须做一个功课。以下任务:
首先,系统会询问您要键入多少个二进制数 - 您只能键入1到5个二进制文件,其他所有内容都会导致错误。
输入是二进制数字(例如01011011),必须由8位数字组成(因此1010或1000010000将为假)。
输入8位二进制数后,我们必须保存用户输入的二进制数。
我的代码是:
#include <stdio.h>
#include <conio.h>
int main () {
char c,input[8];
int s2,amount,y=0,s3;
int s=0,i[s];
printf("How many binary numbers? ");
scanf("%i",&amount);
while(amount < 1||amount > 5) {
printf("F A I L U R E\n");
printf("How many binary numbers? ");
scanf("%i",&amount);
if(amount >= 1 && amount<=5) {
break;
}
}
for(s3=1;s3<=amount;s3++){
L0:
printf("Please enter binary Number (8 digits): ");
for(s2=0;s2<=8;s2++) {
c = getche();
if(c=='0'||c=='1') {
y=1;}
else
y=0;
if(y==1) {
if(s2==7) {
input[s2]=c;
input[8]='\0';
break;}
else
input[s2]=c;}
else if(y==0) {
break;}
}
if(y==0) {
input[0]='\0';
printf("\n");
printf("F A I L U R E: Incorrect Input\n");
goto L0;
}
else
//Now save the binary numbers in a variable
//Tried:
sscanf(input,"%i",&i[s]);
printf("\nBinary number is saved: %i\n\n",i[s]);
s++;
//Problem: if 000100100 --> makes do Octal because of leading 0
//for example if input is 01110011 -> Output is:
//if there is no leading 0, it works
}
//Just for testing, if it was rly saved - two inputs.. - works
printf("The first saved binary was: %i\n",i[0]);
printf("The second saved binary was: %i\n",i[1]);
}
我使用sscanf()
函数来保存输入并且它有效,但是如果数字具有前导零(例如01101100变为295488)则不行 - 这是因为C将前导0的数字解释为八进制。所以我不知道如何摆脱这个问题。我留下了终端输出的图片,以显示问题。Image-Example
有人知道如何在不获取八进制数的情况下将写入的二进制数保存到数组变量中?或者是否有另一种没有sscanf()
的方式?