在C语言中读取二进制数或文件主要通过以下两种方式实现:
一、读取二进制数(输入)
1. 使用`scanf`函数
- 格式化字符串需指定`%b`或`%B`,例如:
```c
int binaryNum;
printf("Enter a binary number: ");
scanf("%b", &binaryNum);
printf("You entered the binary number: %dn", binaryNum);
```
- 适用于从标准输入读取单个二进制数。
二、读取二进制文件
1. 使用`fopen`和`fread`函数
- 打开文件时需指定"rb"模式(二进制读取):
```c
FILE *file = fopen("filename.bin", "rb");
if (file == NULL) {
printf("Failed to open file.n");
return 1;
}
```
- 读取数据到缓冲区:
```c
char buffer;
size_t bytesRead = fread(buffer, 1, sizeof(buffer), file);
if (bytesRead < sizeof(buffer)) {
printf("Failed to read file.n");
fclose(file);
return 1;
}
```
- 关闭文件:
```c
fclose(file);
```
- 示例:将文件内容保存到整型数组
```c
int array;
size_t num_elements = fread(array, sizeof(int), 100, file);
if (num_elements == 0) {
printf("Failed to read file.n");
return 1;
}
for (int i = 0; i < num_elements; i++) {
printf("%d ", array[i]);
}
printf("n");
```
- 注意:`fread`返回实际读取的字节数,需检查是否与预期一致。
总结:读取二进制数可通过`scanf`直接输入,而读取文件需结合`fopen`、`fread`和`fclose`操作,注意处理文件打开失败和数据读取异常的情况。