从文件编码的方式来看,文件可分为ASCII码文件和二进制码文件两种。

  ASCII文件也称为文本文件,这种文件在磁盘中存放时每个字符对应一个字节,用于存放对应的ASCII码。例如,数5678的存储形式为:

ASC码   00110101 00110110  00110111   00111000
 十进制码      5      6      7      8
这样的编码5678共占用4个字节。ASCII码文件可在屏幕上按字符显示, 例如源程序文件就是ASCII文件,用DOS命令TYPE可显示文件的内容。 由于是按字符显示,因此能读懂文件内容。
  二进制文件是按二进制的编码方式来存放文件的。 例如, 数5678的存储形式为: 00010110 00101110只占二个字节。二进制文件虽然也可在屏幕上显示, 但其内容无法读懂。C系统在处理这些文件时,并不区分类型,都看成是字符流,按字节进行处理。 输入输出字符流的开始和结束只由程序控制而不受物理符号(如回车符)的控制。 因此也把这种文件称作“流式文件”。
 
 
#include <stdio.h>
#include <string.h>
#include <fcntl.h>
#include <unistd.h>
int main()
{
 int i;
 int len;
 FILE *out;
 unsigned char in_str[128];
 unsigned char string[] = {0xFF, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0xFF, 0x0};
 memset(in_str, 0, 128);
 len = strlen(string);
 out = fopen("Test", "w+");
 fwrite(string, sizeof(unsigned char), len, out);
 fclose(out);
 out = fopen("Test", "r+");
 fread(in_str, sizeof(unsigned char), len, out);
 for(i = 0; i < len; i++)
  printf("%x ", in_str[i]);
 fclose(out);
 printf("\n");
 
 
 {
  memset(in_str, 0, 128);
  int fd;
  fd = open("PText", O_CREAT|O_RDWR, 0666);
  write(fd, string, len);
  close(fd);
  
  fd = open("PText", O_RDWR);
  read(fd, in_str, len);
  for(i = 0; i < len; i++)
   printf("%x ", in_str[i]);
  close(fd);
  printf("\n"); 
 }
 
 {
  out = fopen("TTest", "w+");
  for(i = 0; i < len; i++){
   fprintf(out, "0x%x ", string[i]);
  }
  fclose(out);
  
  memset(in_str, 0, 128);
  out = fopen("TTest", "r+");
  for(i = 0; i < len; i++){
   fscanf(out, "%x", &in_str[i]);
  }
  for(i = 0; i < len; i++)
   printf("%x ", in_str[i]);
  fclose(out);
  printf("\n"); 
 }
 
 return 0;
}
 
使用UltraEdit查看Test、PTest、TTest这三个文件,可以很明显的发现其中的不同。
Test和PTest是二进制文件,TTest就是文本文件。

一个程序,让你清楚区分二进制文件和文本文件相关推荐

  1. 编写一个程序,实现以下功能:(1)输入一系列的学生数据(包括学生的学号、姓名和成绩等基本信息),将学生信息写入二进制文件 student . dat 中。。。。。。

    编写一个程序,实现以下功能: (1)输入一系列的学生数据(包括学生的学号.姓名和成绩等基本信息),将学生信息写入二进制文件 student . dat 中.(2)从 student . dat 文件中 ...

  2. python wheel库(安装包查找)(适用于Python扩展程序包的非官方Windows二进制文件、Pypi官方库、清华大学开源软件镜像源)

    适用于Python扩展程序包的非官方Windows二进制文件 Unofficial Windows Binaries for Python Extension Packages Pypi官方库 官方库 ...

  3. 【OS学习笔记】十 实模式:实现一个程序加载器-程序加载器如何将用户程序加载到内存并执行

    上一篇文章学习了以下内容: 用一种不同的分段方法,从另一个不同的的角度理解处理器的分段内存访问机制 使用循环和条件转移指令来优化主引导扇区代码 点击链接查看上一篇文章:点击链接查看 对于主引导扇区部分 ...

  4. 王垠:怎样尊重一个程序员?

    得知一位久违的同学来到了旧金山湾区,然而我见到他时,这人正处于一生中最痛苦的时期. >>>> 他告诉我,自己任职的公司在他加入之前和之后,判若两人.录取的时候公司对他说,我们对 ...

  5. 96KB存储器的怎么算地址范围_每天都在敲代码,但是一个程序在计算机中是怎么运行的?...

    强烈声明:本文很干,请自备茶水! 开门见山,咱不说废话! 你有没有想过,你写的程序,是如何在计算机中运行的吗?比如我们搞Java的,肯定写过这段代码 public class HelloWorld { ...

  6. 论一个程序员的编程修养(你品,你细品)

    论一个程序员的编程修养 转自:陈浩 芯片之家 作者:陈浩 来源:嵌入式云IOT技术圈 什么是好的程序员?是不是懂得很多技术细节?还是懂底层编程?还是编程速度比较快?我觉得都不是.对于一些技术细节来说和 ...

  7. 一个程序员多年的收藏

    程序员珍藏的东西会是什么?呵呵,除了平时写的代码,就是那些百看不厌的电子书了. 昨天很郁闷,我用了5年的移动硬盘,莫名奇妙的坏掉了.里面40G的资料全部报销了. 为了不再重蹈覆辙,我决定把重要的电子书 ...

  8. 一个程序员的多年珍藏--收藏

    2010 - 01 - 15 [置顶] 一个程序员的多年珍藏(1月23日最新更新) 文章分类:Java编程 程序员珍藏的东西会是什么?呵呵,除了平时写的代码,就是那些百看不厌的电子书了. 昨天很郁闷, ...

  9. mysql一百转化为五分制_设计一个程序,将从键盘上输入的百分制成绩转换成对应的五分制成绩并输出。90分以上为A,80~90分为B,...

    设计一个程序,将从键盘上输入的百分制成绩转换成对应的五分制成绩并输出.90分以上为A,80~90分为B,以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内 ...

  10. 计算机 哈弗结构图,作为一个程序员,不知道什么是冯诺依曼体系结构?那肯定也不知道哈佛结构喽!...

    听说你还不知道什么是冯诺依曼体系?赶紧转行吧,这可是最基本的最基础的啊,要知道冯诺依曼可是计算机行业祖师爷般的存在啊,所以啊,无论你是学习java,Python,还是天下第一的PHP,只要你是个干编程 ...

最新文章

  1. 图片在容器里垂直居中
  2. Linux的文本字段统计方法
  3. 能用文件的安卓c语言,使用android NDK将.C 文件编译为 手机 可执行程序或者.so
  4. nginx php7 fastcgi,Windows下搭建PHP7+FastCGI+Nginx环境
  5. Android----Google code android开源项目(四)
  6. python如何确定拐点_多年股市老鸟买卖操作经验——如何在波段操作确定买入点!经典...
  7. 如何在html中编写scss,编写Sass的八个技巧
  8. ★LeetCode(1025)——除数博弈(JavaScript)
  9. 搭建10分钟,解决90%问题,帕累托分析模型为何这么强?
  10. mt管理器错误信息java_DEX编辑
  11. 查询GPU时无进程运行,但是显存却被占用了
  12. 浏览器被360劫持怎么办
  13. JavaScript(js)基础
  14. python字母对应数字上海迪士尼残疾人门票_所有景点提供无障碍设施 残障人士也能玩转上海迪士尼...
  15. C++Primer笔记-A003-decltype使用
  16. 前端基础——URL详解
  17. NBT|45种单细胞轨迹推断方法比较,110个实际数据集和229个合成数据集
  18. eclipse开发jsp网站
  19. [置顶] Rebol 3 工具的学习
  20. PHP执行mpg123,树莓派充当mp3播放器

热门文章

  1. [置顶] 63行代码完美实现html5 贪吃蛇游戏
  2. SparkStreaming自定义Receiver
  3. CKEditor4x word导入不保存格式的解决方案
  4. 第一章 Shell基础知识
  5. AJAX初始化combox 并取值
  6. 事件驱动和状态机模式在YARN中的使用
  7. eclipse提示打不开java虚拟机
  8. asp.net 转换人民币大小金额
  9. 29.FFmpeg+OpenGLES+OpenSLES播放器实现(三.FFmpeg配置和编译脚本)
  10. JS易混淆的方法整理