C语言实现文本文件/二进制文件格式互换

本程序要自己创建个文本格式的输入文件a1.txt,编译后能将文本文件前255字节以内的字符转换成相应的AscII码值的二进制表示,并存入输出文件a2.txt中。然后再将二进制文件还原并存入a3.txt文件。

具体代码如下:

#include <cstdio>
#include <stdio.h>
#include <string.h>
#define NSIZE 8

void print_2(int val2);
/***********文本文件转二进制**********/
void Text2Bin(const char* sIn,const char* sOut){
  char a[255];
  int count = 0;
  int ch;
  for(int j=0; j<255;j++)a[j]='\0';
  FILE* fin=fopen(sIn,"r");
  FILE* fout=fopen(sOut,"w");
  for(int i=0 ; i<=255 ; i++)fscanf(fin,"%c",&a[i]);
  for(int k=0 ; k<=254&&a[k] !='\0'; k++)
  {
    ch = a[k];
    for(int a=7;a>=0;a--) fprintf(fout,"%d",ch>>a&1);
    //fprintf(fout,"\n");
  }
  fclose(fin);
  fclose(fout);
}
/***********二进制文件转文本文件**********/
void Bin2Text(const char* sIn,const char* sOut){
  FILE* fin=fopen(sIn,"r");
  FILE* fout=fopen(sOut,"w");
  char str[255*8];
  for(int r=0; r<255 ;r++) str[r]='\0';
  int i = 0, j = 0, iTemp = 0, flag = 0;
  int ibina[NSIZE];
  char cRead[NSIZE];
  char cChar;
  for(int a=0 ; a<=255 ; a++)fscanf(fin,"%c",&str[a]);
  //for(int f=0 ; f<=255 ; f++)printf("%c",str[f]);
  while(flag <= 255){
    //printf("%d",flag);
    for(int b=flag ; b>=flag && b<flag+NSIZE ; b++)
    {
      //printf("%d",b%8);
      cRead[b%8] = str[b];
      //printf("%c",cRead[b%8]);
    }
    for(i = 0; i < NSIZE; i++)
    {
      ibina[i] = (cRead[i]-'0');
    }
    iTemp = 1;
    cChar = 0;
    for(j = 7; j >=0 ; j--)
    {
      //printf("%c",ibina[j]);
      //printf("%d\n",cChar);
      cChar+=ibina[j]*iTemp;
      iTemp *= 2;
    }
    printf("%c",cChar);
    fprintf(fout,"%c",cChar);
    flag=flag+8;
  }
  fclose(fin);
  fclose(fout);
}

int main(){
  Text2Bin("d:\\a1.txt","d:\\a2.txt");
  Bin2Text("d:\\a2.txt","d:\\b2.txt");
  printf("\nSuccessfully converted file!\n");
  return 0;
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 交换两个文本内容的C语言代码

    文本存储的位置: jack.txt位于:    e:\jack.txt retchie.txt位于:     e:\retchie.txt 内容: jack.txt   ->  "Hello! I am Jack." retchie.txt   ->   "Hello! I am Retchie." 相关代码: 复制代码 代码如下: #include <stdio.h> int main(void){    char temp1[100]; 

  • C语言采用文本方式和二进制方式打开文件的区别分析

    稍微了解C程序设计的人都知道,文本文件和二进制文件在计算机上面都是以0,1存储的,那么两者怎么还存在差别呢?对于编程人员来说,文本文件和二进制文件就是一个声明,指明了你应该以什么方式(文本方式/二进制)打开这个文件,用什么函数读写这个文件(读写函数),怎么判断读到这个文件结尾等. 具体分析如下: 一.以哪种方式打开一个文件: ANSI C规定了标准输入输出函数库,用 fopen()函数打开文件.fopen()函数的调用方式一般为: FILE *fp; fp=fopen(文件名,使用文件方式):

  • C语言实现修改文本文件中特定行的实现代码

    好的,首先我先叙述下功能要求:其实很简单,就是Shell中sed命令的C语言实现,实现定位到所需要的字段的那一行,之后修改成需要的内容.但是由于C语言是面向过程的语言,需要顺序执行的特点,所以,实现中遇到了很多麻烦,在这里博主将实现的过程描述如下,以便大家参考. 问题描述: 文本内容: 复制代码 代码如下: wireless.1.authmode=1wireless.1.compression=0wireless.1.current_ap=ssid12wireless.1.current_sta

  • C语言实现文本编辑器系统

    本文实例为大家分享了C语言实现文本编辑器系统的具体代码,供大家参考,具体内容如下 /*文本编辑器editor源代码*/ #include <stdio.h> #include <conio.h> #include <bios.h> #include <math.h> #define LEFT 0x4b00 /*←:光标左移*/ #define RIGHT 0x4d00 /*→:光标右移*/ #define DOWN 0x5000 /*↓键:光标下移*/ #d

  • C语言中使用lex统计文本文件字符数

    我曾经在Linux上写的一个C程序,借助Lex做词法分析来同时统计N个文本文件的字符数,单词数和行数.让我觉得Lex确实挺有意思的.确实Lex的功能非常强大,用来做小巧的词法分析非常适合,也非常好用.这个程序参考了<Lex与Yacc>上的一个例子. %{ unsigned int char_count = 0, word_count = 0, line_count = 0; %} %% [^ /t/n]+ {word_count++; char_count+=yyleng;}; /n {cha

  • c语言操作文本的基本使用方法

    字符读写函数  :fgetc和fputc字符串读写函数:fgets和fputs数据块读写函数:freed和fwrite格式化读写函数:fscanf和fprinf 1.字符读写:fgetc函数的功能是从指定的文件中读一个字符,函数调用的形式为:字符变量=fgetc(文件指针):fputc函数的功能是把一个字符写入指定的文件中,函数调用的形式为:fputc(字符量,文件指针): 2.字符串读写读字符串函数fgets 函数的功能是从指定的文件中读一个字符串到字符数组中,函数调用的形式为: fgets(

  • C语言将日期、时间保存到文本文件中的方法

    前言 今天突然兴起,看来一下C语言的文件操作,以前在学习的时候,总是一带而过,觉得没有什么用处:但是现在看来,还真的没有什么用处,最后,我现在还有用到,当然这只是我的个人认为,并不能说明什么,在此我将自己写的一段代码附上,希望能和大家一同学习 1.打开一个文本文件 FILE *fopen( const char * filename, const char * mode ); linux文件路径: linux:fopen("/tmp/test.txt", "w+")

  • 用C语言实现从文本文件中读取数据后进行排序的功能

    功能介绍 程序的功能是从外部读取一个包括int型数据的文本文件,然后将它保存到内部临时数组,对数组进行排序后,以文本形式输出到指定的文件上.因为是int类型的数据,没有很严重的损失精度的问题. 正常运行要求: 包括数据的源文件内不能包括其他任何除数字和空白字符(空格,制表符,换行符)之外的任何字符,源文件最开始必须是数字字符,要保证源文件的数据计数正确.同时保证文件名有效. 运行结果 data.txt: obj.txt: 完整代码 警告:版权所有,谨供参考! #include <stdio.h>

  • C语言实现文本文件/二进制文件格式互换

    本程序要自己创建个文本格式的输入文件a1.txt,编译后能将文本文件前255字节以内的字符转换成相应的AscII码值的二进制表示,并存入输出文件a2.txt中.然后再将二进制文件还原并存入a3.txt文件. 具体代码如下: #include <cstdio> #include <stdio.h> #include <string.h> #define NSIZE 8 void print_2(int val2); /***********文本文件转二进制********

  • C语言格式输出二进制的2种方法总结

    目录 1.前言 2.源码实现 3.结果展示 附:C语言如何将一个数字的二进制形式输出出来 总结 1.前言 在我们日常的编程中,有时候需要格式化输出一个整形数据的二进制,但是在我们C语言中只有 输出十进制:%d: 输出十六进制:%x: 输出单个字符:%c: 输出字符串:%s: 输出变量所在的地址:%p: 而并没有这种二进制对应的格式,所以需要我们手动来实现. 2.源码实现 本篇博客给大家介绍两种方法: 1.通过库函数itoa,需要包含头文件:#include <stdlib.h>: 2.通过十进

  • R语言中文本文件分割 符号 sep的用法

    一般情况下: csv 文件 sep = "," # 以逗号分割 txt 文件 sep = "\t" #以制表符分割 其他文件 sep = " " #以空格分割 具体情况,具体调整 sep= 文件中的字段分离符,用于文件数据文本的读取和保存过程中指定分割符号. 补充:用R语言把超大文本文件拆分成几个小文本文件 近一段时间一直在研究一些医院的数据. 前两天遇到一个尴尬:想打开一个仅有3G左右的文本文件(有时候必须要打开,直接传到数据库满足不了需求),

  • C语言以数据块的形式读写文件实例代码

    fgets() 有局限性,每次最多只能从文件中读取一行内容,因为 fgets 遇到换行符就结束读取.如果希望读取多行内容,需要使用 fread 函数:相应地写入函数为 fwrite. fread() 函数用来从指定文件中读取块数据.所谓块数据,也就是若干个字节的数据,可以是一个字符,可以是一个字符串,可以是多行数据,并没有什么限制.fread() 的原型为: size_t fread ( void *ptr, size_t size, size_t count, FILE *fp ); fwri

  • C语言 以数据块的形式读写文件详解及实现代码

    fgets() 有局限性,每次最多只能从文件中读取一行内容,因为 fgets 遇到换行符就结束读取.如果希望读取多行内容,需要使用 fread 函数:相应地写入函数为 fwrite. fread() 函数用来从指定文件中读取块数据.所谓块数据,也就是若干个字节的数据,可以是一个字符,可以是一个字符串,可以是多行数据,并没有什么限制.fread() 的原型为: size_t fread ( void *ptr, size_t size, size_t count, FILE *fp ); fwri

  • R语言数据读取以及数据保存方式

    一.R语言读取文本文件: 1.文件目录操作: getwd() : 返回当前工作目录 setwd("d:/data") 更改工作目录 2.常用的读取指令read read.table() : 读取文本文件 read.csv(): 读取csv文件 如果出现缺失值,read.table()会报错,read.csv()读取时会自动在缺失的位置填补NA 3.灵活的读取指令 scan() : 4.读取固定宽度格式的文件: read.fwf() 文本文档中最后一行的回车符很重要,这是一个类似于停止符

  • C语言MultiByteToWideChar和WideCharToMultiByte案例详解

    目录 注意: 一.函数简单介绍 ( 1 ) MultiByteToWideChar() ( 2 ) WideCharToMultiByte() 二.使用方法 ( 1 ) 将多字节字符串转为宽字符串: ( 2 ) 从宽字节转为窄字节字符串 三.MultiByteToWideChar()函数乱码的问题 注意: 这两个函数是由Windows提供的转换函数,不具有通用性 C语言提供的转换函数为mbstowcs()/wcstombs() 一.函数简单介绍 涉及到的头文件: 函数所在头文件:windows.

  • Python常见读写文件操作实例总结【文本、json、csv、pdf等】

    本文实例讲述了Python常见读写文件操作.分享给大家供大家参考,具体如下: 读写文件 读写文件是最常见的IO操作,python内置了读写文件的函数,用法和c是兼容的. 读写文件前,我们必须了解一下,在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘,所以读写文件就是请求操作系统打开一个文件对象(文件描述),然后,通过操作系统提供的接口从这个文件对象中读取数据(读文件),或者把数据写入这个文件对象(写文件). 1.读文件 要以读文件的模式打开一个文件对象,使用p

  • Java JVM字节码指令集总结整理与介绍

    目录 Java是怎么跨平台的 平台无关的基石 JVM字节码指令介绍 字节码与数据类型 加载和存储指令 算术指令 类型转换指令 宽化类型转换 窄化类型转换: 对象创建与访问指令 操作数栈管理指令 控制转移指令 方法调用和返回指令 异常处理指令 同步指令 JVM指令集大全 Java是怎么跨平台的 我们上计算机课的时候老师讲过:"计算机只能识别0和1,所以我们写的程序要经过编译器翻译成0和1组成的二进制格式计算机才能执行".我们编译后产生的.class文件是二进制的字节码,字节码是不能被机器

  • Visual C++ 常用数据类型转换方法详解第1/2页

    说明:本文纯粹是总结一下有关类型转换的贴子, 本人并未对所有方法都做测试,仅仅是为了给大家一个参考. 读者层次:初学 int i = 100; long l = 2001; float f=300.2; double d=12345.119; char username[]="程佩君"; char temp[200]; char *buf; CString str; _variant_t v1; _bstr_t v2; 一.其它数据类型转换为字符串 短整型(int) itoa(i,te

随机推荐