在C语言中读入二进制数可以通过以下两种方式实现:
一、从标准输入读取二进制数
使用`scanf`函数 可以通过`scanf`函数读取二进制数,需在格式字符串中指定`%b`或`%B`(C99标准)。
```c
include
int main() {
unsigned int binaryNum;
printf("Enter a binary number: ");
scanf("%b", &binaryNum);
printf("You entered the binary number: %dn", binaryNum);
return 0;
}
```
注意:
`%b`是C99标准新增的格式说明符,部分编译器可能不支持,需使用`%u`读取无符号整数后手动转换为二进制。
手动转换字符输入
由于`scanf`对二进制输入的支持有限,另一种方法是读取字符输入后手动转换为二进制数。
```c
include
int main() {
char str;
printf("Enter a binary number: ");
scanf("%99s", str); // 读取最多99个字符(最后一个字符用于存储'0')
int decimalNum = 0;
for (int i = 0; str[i] != '0'; i++) {
if (str[i] == '1' || str[i] == '0') {
decimalNum = decimalNum * 2 + (str[i] - '0');
} else {
printf("不是二进制数
");
return 1;
}
}
printf("Decimal number: %d
", decimalNum);
return 0;
}
```
二、从二进制文件读取数据
使用`fread`函数以二进制模式读取文件内容。
基本步骤
- 以`"rb"`模式打开文件
- 使用`fread`读取指定大小的数据到缓冲区
- 检查读取是否成功
- 关闭文件
示例代码
```c
include include int main() { FILE *file = fopen("binary_file.bin", "rb"); if (file == NULL) { perror("Failed to open file"); return 1; } char buffer; size_t bytesRead = fread(buffer, sizeof(char), sizeof(buffer), file); if (bytesRead < sizeof(buffer)) { perror("Failed to read file"); fclose(file); return 1; } fclose(file); // 打印读取的数据(十六进制) for (size_t i = 0; i < bytesRead; i++) { printf("%02X ", (unsigned char)buffer[i]); } printf(" "); return 0; } ``` 三、注意事项
输入验证: 手动转换时需检查输入是否为有效二进制字符。 文件操作
数据类型匹配:读取文件时需确保缓冲区大小与文件数据类型匹配,避免数据溢出。
通过以上方法,可以在C语言中灵活实现二进制数的读入操作。