繁体   English   中英

如何将终端输入的数字分解为数字?

[英]How can I break a number that I input in the terminal into digits?

好的,所以我要做的是在终端中输入一个二进制数字,可能使用argv []或类似的东西,然后将其分解为每个数字。 我所拥有的是:

int bits[31];
for(int i=0; i<31 && 1 == fscanf(stdin, "%1d", &bits[i]); ++i);

这适用于scanf,但是我想要一种简单的方法,但是输入在终端中

此代码接受二进制数作为程序参数。 大多数代码专用于清除任何无效的参数。

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

int main(int argc, char *argv[])
{
    int len;
    long bin;
    if (argc < 2) {
        printf("Please try again with an argument supplied\n");
        return 1;
    }
    len = strlen(argv[1]);
    if (strspn(argv[1], "01") != len) {
        printf("The argument is not a binary number\n");
        return 1;
    }
    printf("First bit is %c\n", argv[1][0]);
    printf("Last bit is %c\n", argv[1][len-1]);

    bin = strtol(argv[1], NULL, 2);
    printf("As a long integer variable, the input is %ld\n", bin);
    return 0;
} 

如果没有错误检查(针对崩溃除外),这将减少为

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

int main(int argc, char *argv[])
{
    int len;
    if (argc > 1) {
        len = strlen(argv[1]);
        printf("First bit is %c\n", argv[1][0]);
        printf("Last bit is %c\n", argv[1][len-1]);
        printf("As a long integer the input is %ld\n", strtol(argv[1], NULL, 2));
    }
    return 0;
} 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM