如何制作一组每个arrays位置都是我的数字位数的整数?

所以我正在考虑的是一个小程序,用户输入二进制数(即1010010100111000001),然后将其存储在一个数组中,每个数组位置与我的数字的数字相关联。 示例:位[0] = 1,位[1] = 0等。我想到的代码是这个,但我不相信它有效:

int bit [31]; scanf("%i", bit); 

请帮忙!

主要问题是如何确保用户输入有效的二进制数,即仅为0和1。 您可以尝试逐个字符地读取输入,并使用标准的sscanf格式检查输入是否有效: %[01] 。 您还应该将输入的大小限制为单个字符。 因此最终格式: %1[01]

 #include  #include  int main(int argc, char* argv[]) { int bits[31]; char input[2]; int i; int j; fprintf(stdout, "Enter at most 31 bits: "); for(i=0; i<31 && 1 == fscanf(stdin, "%1[01]", input); ++i) bits[i] = (input[0]=='1' ? 1 : 0); fprintf(stdout, "You entered: \n"); for(j=0; j 

没有错误检查,您需要的代码是

 char bitstream[31]; scanf("%30s", bitstream); 
 #include  int main(void) { char line[64]; int bit[32]; int i, n; scanf("%32[01]", line);//fgets(line, sizeof(line), stdin);//input up to newline for(i = 0; i < 32; ++i){ if(1!=sscanf(&line[i], "%1d", &bit[i]))//read one digit break; } n = i; for(i = 0; i < n; ++i){ printf("%d", bit[i]); } putchar('\n'); return 0; }