首页  > 教育解读  > c语言如何输入二进制字符串

c语言如何输入二进制字符串

2025-05-04 07:02:32
面试高老师
面试高老师已认证

面试高老师为您分享以下优质知识

在C语言中输入二进制字符串可以通过以下两种常见方法实现:

一、使用字符数组读取输入

通过`scanf`函数读取用户输入的字符数组,并逐位判断是否为二进制字符('0'或'1')。

示例代码:

```c

include

int main() {

char str;

printf("请输入二进制数: ");

scanf("%99s", str); // 限制输入长度为99,留1位给终止符

int n = 0;

for (int i = 0; str[i] != '0'; i++) {

if (str[i] == '1' || str[i] == '0') {

n = n * 2 + (str[i] - '0');

} else {

printf("输入的不是二进制数

");

return 1;

}

}

printf("对应的十进制数为: %d

", n);

return 0;

}

```

说明:

1. 使用`scanf("%99s", str)`读取二进制字符串,避免缓冲区溢出。

2. 遍历字符串,将二进制位转换为十进制并累加。

二、使用`scanf`的格式说明符

C语言标准库提供了`%b`或`%B`格式说明符,可直接读取二进制数(0和1)。

示例代码:

```c

include

int main() {

unsigned int binaryNum;

printf("请输入二进制数: ");

scanf("%b", &binaryNum); // 读取二进制数

printf("对应的十进制数为: %u

", binaryNum);

return 0;

}

```

注意事项:

输入的二进制数应为8的倍数,否则`scanf`可能无法正确解析。

该方法仅适用于固定长度的二进制数(如8位、16位等),不支持动态长度输入。

三、其他方法(扩展)

字符串转换函数:

如`strtol`可配合`%b`使用,但需注意输入格式限制。

位运算:

通过位移和掩码操作将整数转换为二进制字符串,适用于特定场景。

示例(使用`sprintf`格式化输出):

```c

include

int main() {

unsigned int num = 26;

char binaryStr = {0}; // 8位二进制数

sprintf(binaryStr, "%b", num);

printf("十进制数 %u 的二进制表示为: %s

", num, binaryStr);

return 0;

}

```

以上方法可根据具体需求选择,若需动态输入且长度不固定,推荐使用字符数组读取法;若输入长度固定且为8的倍数,可用`scanf("%b")`简化操作。