目录

  • 实验要求
  • 设计方法
  • 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字符文件与二进制字符文件的相互转换相关推荐

  1. 串口编程 - ascii字符与16进制的相互转换

    串口编程 - ascii字符与16进制的相互转换 如需转载请标明出处:http://blog.csdn.net/itas109 QQ技术交流群:129518033 文章目录 串口编程 - ascii字 ...

  2. c语言 ascii 和 压缩bcd 码之间的相互转换

    转载请标注出处:(版权所有) 本文将从五点详细介绍bcd码和ascii 之间的关系,如下所示: 一.简介 二.用途 三.特点 四.代码原理 五.代码 1.ascii 转压缩bcd码   2. 压缩bc ...

  3. 图片上传流程前端上传文件后端保存文件并返回图片地址

    也是在最近一点时间写小demo 遇到的一些问题 比如在用户界面,用户选择本地的一张照片,前端把照片传到后端,后端怎么把照片保存到服务器,然后返回给 图片线上地址.也是找了一些文章,然后分享下. 技术 ...

  4. 【C 语言】文件操作 ( 按照单个字符的方式读写文件 | fgetc 函数 | fputc 函数 )

    文章目录 一.文件名路径设置 二.文件打开方式 三.fputc 函数 | 按照字符方式写文件 1.fputc 函数 2.代码示例 四.fgetc 函数 | 按照字符方式读文件 1.fgetc 函数 2 ...

  5. c语言设置输出字符大小_C语言中常用的几个头文件及库函数

    点击上方"C语言中文社区",选择"设为星标★" 技术干货第一时间送达! 来源:https://www.jb51.net/article/124594.htm 这 ...

  6. High ASCII字符从bat文件到dos控制台的转化问题

    背景是这样的,由于项目需要,需要用silent install的方式安装一些程序,而安装参数中有一些High ASCII字符,如ùé.通过代码,使用默认编码(ANSI,说明下,我用的是法语的系统)创建 ...

  7. C语言以字符形式读写文件

    C语言以字符形式读写文件 在C语言中,读写文件比较灵活,既可以每次读写一个字符,也可以读写一个字符串,甚至是任意字节的数据(数据块). 以字符形式读写文件时,每次可以从文件中读取一个字符,或者向文件中 ...

  8. 查找代码文件中的非 ASCII 字符

    在 Visual Studio 中编译代码,报如下错误: warning C4819: The file contains a character that cannot be represented ...

  9. 将字符写入文件c语言,C语言写入字符到文件

    C语言写入字符到文件教程 在 C语言fputc函数详解 语法 int fputc(int ch, FILE *fp); 参数 参数 描述 ch 要写入的字符. fp 打开文件返回的文件指针. 返回值 ...

最新文章

  1. mysql 批处理文件传参_如何实现批处理文件传参数给SQLPLUS
  2. pytorch 加载模型:
  3. python入门买什么书-大学生Python入门什么书好?
  4. jpa 自定义sql if_数据产品经理必备之SQL基础
  5. flink 8 state checkpoint savepoint区别
  6. K8S Learning(4)——Namespace
  7. cenos6.4安装gvim
  8. 骚操作!他居然同时给谷歌和 Facebook 上班干活
  9. imagenet classification with deep convolutional neural networks
  10. 2019牛客多校第三场F Planting Trees(单调队列)题解
  11. 跟我一起学C++课程笔记(第二天)
  12. 博文视点“阿里云全系列技术图书”隆重亮相2021云栖大会
  13. 嵌入式C语言(入门必看)
  14. python操作 e'xcel表格
  15. [SHOI2015]激光发生器
  16. 基于深度学习的知识图谱综述
  17. IDEA 生成代码神器
  18. 大数据时代的特种兵——阿里数据产品团队
  19. 模型稳定度指标PSI与IV
  20. 华为云郑叶来:AI炒作和投机回落,行业应用春天开始

热门文章

  1. 隐私保护联邦学习之差分隐私原理
  2. 2022保研夏令营经验贴(中科大、华科、武大、国防科大、浙大软件、中科院)
  3. 进出队C语言不用链表,C语言面试题总汇简要
  4. 页码数字统计问题(数字统计问题)
  5. java 保存文件在服务器_Java中如何将数据保存到服务器端
  6. 黑杰克blackjack 游戏的简化版(第一个游戏程序)
  7. 基本回路系统和基本割集系统
  8. LPC1768 MCUXpresso IDE环境下使用完整64K内存的方法
  9. PowerPivot的杀手锏是什么?
  10. Java学习—初入Java