【问题标题】:How can I make an array of intengers where each array position is a digit of my number?如何制作一个整数数组,其中每个数组位置都是我的数字的一个数字?
【发布时间】:2015-04-03 12:53:27
【问题描述】:

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

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

请帮忙!

【问题讨论】:

    标签: c arrays integer


    【解决方案1】:

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

    #include <stdio.h>
    #include <stdlib.h>
    
    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<i; ++j)
           fputc(bits[j]?'1':'0', stdout);
       fprintf(stdout, "\n");
       return 0;
    }
    

    【讨论】:

      【解决方案2】:

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

      char bitstream[31];
      scanf("%30s", bitstream);
      

      【讨论】:

      • 我认为 OP 想要整数值 0 和 1,而不是 '0' 和 '1'。
      • @hyde point,但我认为这部分很简单,使用bitstream[i] -= '0'; 类型的语句。我的目的是让 OP 能够正确地接受输入。 :-)
      【解决方案3】:
      #include <stdio.h>
      
      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;
      }
      

      【讨论】:

        猜你喜欢
        • 2021-01-21
        • 1970-01-01
        • 2014-12-27
        • 2012-01-18
        • 1970-01-01
        • 2018-03-24
        • 2015-10-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多