在C语言中读取二进制数字的方法主要有以下两种方式,具体选择取决于输入数据的来源:
一、通过标准输入读取二进制字符串并转换为数字
适用于从键盘输入二进制字符串(如"1010"),需要手动解析并转换为整数:
```c
include include int main() { char str; int n = 0, value = 0; scanf("%99s", str); // 限制输入长度防止缓冲区溢出 for (int i = 0; str[i] != '0'; i++) { if (str[i] == '1' || str[i] == '0') { value = value * 2 + (str[i] - '0'); } else { printf("不是二进制数n"); return 1; } } printf("转换后的十进制数: %dn", value); return 0; } ``` 说明:使用`scanf`读取二进制字符串,逐位计算其对应的十进制值。 二、通过文件读取二进制数据 适用于从二进制文件中读取已存储的数字(如整型、浮点型等),需使用`fread`函数: ```c include include int main() { FILE *file = fopen("binary_file.bin", "rb"); if (file == NULL) { perror("无法打开文件"); return 1; } int array; size_t num_elements = fread(array, sizeof(int), 100, file); if (num_elements == 0) { perror("读取文件失败"); fclose(file); return 1; } fclose(file); // 输出读取的数组内容 for (int i = 0; i < num_elements; i++) { printf("%d ", array[i]); } printf("n"); return 0; } ``` 说明: 1. 使用`fopen`以二进制读取模式("rb")打开文件; 2. 使用`fread`按指定数据类型和数量读取文件内容到数组; 3. 读取完成后关闭文件并处理数据。
三、注意事项
输入验证:读取二进制字符串时需严格检查字符是否为'0'或'1',避免非法输入;
文件操作:使用`fopen`时需检查返回值是否为`NULL`,确保文件成功打开;
数据类型匹配:`fread`时需指定与文件中存储的数据类型一致(如`int`、`float`等)。