C语言:ASCII字符文件与二进制字符文件的相互转换
目录
- 实验要求
- 设计方法
- producer.c
- consumer.c
实验要求
- 设计一个名为producer.c的程序,该程序读取文本文件(包含 ASCII字符的文件),并使用0和1将所有字符编码为二进制字符。
- 设计一个名为consumer.c的程序,它将读取二进制文件,并将二进制文件的内容转换为 ASCII 字符序列。
- 使用操作系统工具(如diff)检查原始文本文件和程序生成的文件是否相同。如果您不熟悉diff 命令,您可以在命令行中键入
man diff
。 man 命令返回其后的Linux 命令的语法和语义。
设计方法
程序的整体流程可以表示为:
producerTest.txt -> producer.c -> test.tmp -> consumer.c ->
consumerTest.txt
其中,producerTest.txt是包括ASCII字符的原文件,producer.c将ASCII字符逐一翻译成8位二进制表示,得到二进制文件test.tmp。consumer.c将二进制表示翻译成为ASCII字符,从而得到consumerTest.txt。
若producerTest.txt与consumerTest.txt完全一致,则认为程序设计成功。这一点可以通过diff命令完成。代码如下:
producer.c
#include <stdio.h>
#include <string.h>
#define NSIZE 8void text2bin(const char* sIn, const char* sOut) {int count = 0;int ch,a;char temp;FILE * fin = fopen(sIn, "r");FILE * fout = fopen(sOut, "w");while(fscanf(fin, "%c", &temp)!=EOF) {ch=temp;for (a = 7; a >= 0; a--) fprintf(fout, "%d", ch >> a & 1);}fclose(fin);fclose(fout);}int main() {text2bin("producerTest.txt", "test.tmp");return 0;
}
consumer.c
#include <stdio.h>
#include <string.h>
#define NSIZE 8void bin2text(const char* sIn, const char* sOut) {FILE * fin = fopen(sIn, "r");FILE * fout = fopen(sOut, "w");int i = 0, j = 0, iTemp = 0, flag = 0;int ibina[NSIZE];char cRead[NSIZE];char str[8];char cChar;int a=0;while(fscanf(fin, "%c", &str[a%8])!=EOF) {if(a%8==7) {iTemp = 1;cChar = 0;for (j = 7; j >= 0; j--) {cChar += (str[j]-'0') * iTemp;iTemp *= 2;}fprintf(fout, "%c", cChar);}a++;}fclose(fin);fclose(fout);}int main() {bin2text("test.tmp", "consumerTest.txt");return 0;
}
C语言:ASCII字符文件与二进制字符文件的相互转换相关推荐
- 串口编程 - ascii字符与16进制的相互转换
串口编程 - ascii字符与16进制的相互转换 如需转载请标明出处:http://blog.csdn.net/itas109 QQ技术交流群:129518033 文章目录 串口编程 - ascii字 ...
- c语言 ascii 和 压缩bcd 码之间的相互转换
转载请标注出处:(版权所有) 本文将从五点详细介绍bcd码和ascii 之间的关系,如下所示: 一.简介 二.用途 三.特点 四.代码原理 五.代码 1.ascii 转压缩bcd码 2. 压缩bc ...
- 图片上传流程前端上传文件后端保存文件并返回图片地址
也是在最近一点时间写小demo 遇到的一些问题 比如在用户界面,用户选择本地的一张照片,前端把照片传到后端,后端怎么把照片保存到服务器,然后返回给 图片线上地址.也是找了一些文章,然后分享下. 技术 ...
- 【C 语言】文件操作 ( 按照单个字符的方式读写文件 | fgetc 函数 | fputc 函数 )
文章目录 一.文件名路径设置 二.文件打开方式 三.fputc 函数 | 按照字符方式写文件 1.fputc 函数 2.代码示例 四.fgetc 函数 | 按照字符方式读文件 1.fgetc 函数 2 ...
- c语言设置输出字符大小_C语言中常用的几个头文件及库函数
点击上方"C语言中文社区",选择"设为星标★" 技术干货第一时间送达! 来源:https://www.jb51.net/article/124594.htm 这 ...
- High ASCII字符从bat文件到dos控制台的转化问题
背景是这样的,由于项目需要,需要用silent install的方式安装一些程序,而安装参数中有一些High ASCII字符,如ùé.通过代码,使用默认编码(ANSI,说明下,我用的是法语的系统)创建 ...
- C语言以字符形式读写文件
C语言以字符形式读写文件 在C语言中,读写文件比较灵活,既可以每次读写一个字符,也可以读写一个字符串,甚至是任意字节的数据(数据块). 以字符形式读写文件时,每次可以从文件中读取一个字符,或者向文件中 ...
- 查找代码文件中的非 ASCII 字符
在 Visual Studio 中编译代码,报如下错误: warning C4819: The file contains a character that cannot be represented ...
- 将字符写入文件c语言,C语言写入字符到文件
C语言写入字符到文件教程 在 C语言fputc函数详解 语法 int fputc(int ch, FILE *fp); 参数 参数 描述 ch 要写入的字符. fp 打开文件返回的文件指针. 返回值 ...
最新文章
- mysql 批处理文件传参_如何实现批处理文件传参数给SQLPLUS
- pytorch 加载模型:
- python入门买什么书-大学生Python入门什么书好?
- jpa 自定义sql if_数据产品经理必备之SQL基础
- flink 8 state checkpoint savepoint区别
- K8S Learning(4)——Namespace
- cenos6.4安装gvim
- 骚操作!他居然同时给谷歌和 Facebook 上班干活
- imagenet classification with deep convolutional neural networks
- 2019牛客多校第三场F Planting Trees(单调队列)题解
- 跟我一起学C++课程笔记(第二天)
- 博文视点“阿里云全系列技术图书”隆重亮相2021云栖大会
- 嵌入式C语言(入门必看)
- python操作 e'xcel表格
- [SHOI2015]激光发生器
- 基于深度学习的知识图谱综述
- IDEA 生成代码神器
- 大数据时代的特种兵——阿里数据产品团队
- 模型稳定度指标PSI与IV
- 华为云郑叶来:AI炒作和投机回落,行业应用春天开始