在C语言中向文本输入二进制数据,通常需要通过以下两种方式实现:
通过字符流输入二进制字符串并解析 使用`scanf`读取二进制字符串(如`010101`),然后逐位转换为整数。示例代码如下:
```c
include
int main() {
char str;
int n = 0;
printf("请输入32位二进制数:n");
scanf("%s", str); // 读取二进制字符串
for (int i = 0; str[i] != '0'; i++) {
if (str[i] == '1' || str[i] == '0') {
n = n * 2 + (str[i] - '0');
} else {
printf("不是二进制数n");
return 1;
}
}
printf("对应的十进制数为:%dn", n);
return 0;
}
```
通过二进制文件读写操作
使用`fopen`以二进制模式(`"rb"`或`"wb"`)打开文件,通过`fread`和`fwrite`进行二进制数据的读写。示例代码如下:
```c
include
int main() {
FILE *fin, *fout;
int number = 42;
float score = 95.5f;
char name[] = "张三";
// 写入二进制文件
fin = fopen("data.bin", "wb");
if (!fin) {
printf("无法创建文件!n");
return 1;
}
fwrite(&number, sizeof(number), 1, fin);
fwrite(&score, sizeof(score), 1, fin);
fwrite(name, sizeof(name), 1, fin);
fclose(fin);
// 读取二进制文件
fout = fopen("data.bin", "rb");
if (!fout) {
printf("无法打开文件!n");
return 1;
}
fread(&number, sizeof(number), 1, fout);
fread(&score, sizeof(score), 1, fout);
fread(name, sizeof(name), 1, fout);
fclose(fout);
printf("读取的数值:%d %f %sn", number, score, name);
return 0;
}
```
说明: 字符流方法