欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    C程序设计C程序设计 (96).pdf

    • 资源ID:52867844       资源大小:912.07KB        全文页数:24页
    • 资源格式: PDF        下载积分:10金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    C程序设计C程序设计 (96).pdf

    C C程序设计程序设计Programming in CProgramming in C编程处理各种格式的文件编程处理各种格式的文件1、从文件中读写二进制数据2、成千上万的文件格式C C程序设计程序设计程序设计程序设计3 310.3.5 10.3.5 读写数据块读写数据块fread函数从文件中读入指定数目指定记录大小的数据块,其函数原型为:size_tsize_t freadfread(voidvoid*bufferbuffer,size_tsize_t sizesize,size_tsize_t countcount,FILEFILE*streamstream););4 410.3.5 10.3.5 读写数据块读写数据块参数stream是已打开的文件指针,该文件必须是以读或读写方式打开的。buffer是数组或能容纳成批数据的内存区起始地址(如动态分配得到的内存区),用于存储读取到的数据。参数size表示所读记录的大小,如读字节数据时,记录为字节,大小为1;又比如读结构体数据时,记录为结构体,大小为结构体长度。参数count表示欲读取多少个记录,如为单个记录,则count为1,如为一批记录(数组),则count为记录数或数组长度。因此,使用fread函数读到的总字节数等于。5 510.3.5 10.3.5 读写数据块读写数据块例如:intint m m,*,*p p;unsigned charunsigned char arrayarray 100100;structstruct tagDATA atagDATA a,B B 1010;freadfread(&(&m m,sizeofsizeof(intint),),1 1,fpfp););/读1个整型,参数buffer是整型变量的地址/读100个字节,参数buffer是数组名(地址)/读1个整型,参数buffer是整型变量的地址/读100个字节,参数buffer是数组名(地址)freadfread(arrayarray,sizeofsizeof(unsigned charunsigned char),),100100,fpfp););/读结构体,参数buffer是结构体对象的地址/读结构体,参数buffer是结构体对象的地址freadfread(&(&a a,sizeofsizeof(structstruct tagDATAtagDATA),),1 1,fpfp););/读结构体数组,参数buffer是数组名(地址)/读结构体数组,参数buffer是数组名(地址)freadfread(B B,sizeofsizeof(structstruct tagDATAtagDATA),),1010,fpfp););p p=(=(intint*)*)mallocmalloc(100100*sizeofsizeof(intint););/动态分配能容纳100个整型的内存区/动态分配能容纳100个整型的内存区freadfread(p p,sizeofsizeof(intint),),100100,fpfp););/读100个整型,参数buffer是指针值(地址)/读100个整型,参数buffer是指针值(地址)6 610.3.5 10.3.5 读写数据块读写数据块size_t类型本质上是unsigned int型,函数返回实际读入的记录总数。由于读入错误或实际数据量的原因,返回值总是小于等于count。如果buffer参数实际内存长度不足以存储读入数据时,fread函数会导致崩溃性错误。7 710.3.5 10.3.5 读写数据块读写数据块fwrite函数将指定数目指定记录大小的数据块写入文件中,其函数原型为:fwrite函数参数含义与fread相同,fwrite函数输出时不会进行任何编码转换、插入数据等操作,即直接将内存数据送到文件中。size_tsize_t fwritefwrite(const voidconst void*bufferbuffer,size_tsize_t sizesize,size_tsize_t countcount,FILEFILE*streamstream););8 810.3.5 10.3.5 读写数据块读写数据块使用fread和fwrite函数处理成批数据、数组、结构体等记录形式数据的二进制文件最方便,被广泛地应用于图形图像、音频视频、科学计算、格式文档文件应用中。在处理成批数据二进制文件时,比fgetc和fputc函数有效率。但fread和fwrite函数不适合处理文本文件,因为它将空字符(0)、换行符(n)、回车符(r)都一视同仁,读写数据不容易分辨出字符串信息。9 910.3.5 10.3.5 读写数据块读写数据块【例10.6】使用加大缓冲方式复制源文件为目的文件,支持命令行文件名输入。101010.3.5 10.3.5 读写数据块读写数据块例10.61#include#include 2#include#include 3 intint mainmain(intint argcargc,charchar*argvargv)4 /使用带参数的main函数版本获取命令行信息/使用带参数的main函数版本获取命令行信息5 charchar srcsrc 260260,destdest 260260,buffbuff 1638416384;/读写缓冲达到16K/读写缓冲达到16K6 FILEFILE*inin,*,*outout;7 unsigned intunsigned int rsrs;8 ifif(argcargc 2 2)getsgets(srcsrc););/若无命令行参数输入源文件名/若无命令行参数输入源文件名9 elseelse strcpystrcpy(srcsrc,argvargv 1 1););/否则第1个命令行参数为源文件名/否则第1个命令行参数为源文件名10 ifif(argcargc 3 3)getsgets(destdest););/若只有1个命令行参数输入目的文件名/若只有1个命令行参数输入目的文件名11 elseelse strcpystrcpy(destdest,argvargv 2 2););/否则第2个命令行参数为目的文件名/否则第2个命令行参数为目的文件名12 inin=fopenfopen(srcsrc,rb);,rb);/打开源文件读/打开源文件读13 ifif(inin!=!=NULLNULL)14 outout=fopenfopen(destdest,wb);,wb);/创建目的文件写/创建目的文件写15 whilewhile(!(!feoffeof(inin)/是否到源文件末尾/是否到源文件末尾111110.3.5 10.3.5 读写数据块读写数据块例10.616 rsrs=freadfread(buffbuff,sizeofsizeof(charchar),),sizeofsizeof(buffbuff),),inin););17 fwritefwrite(buffbuff,sizeofsizeof(charchar),),rsrs,outout););/按实际读到字节数写入/按实际读到字节数写入18 19 fclosefclose(outout););/关闭目的文件/关闭目的文件20 fclosefclose(inin););/关闭源文件/关闭源文件21 22 returnreturn 0 0;23 121210.5 10.5 编程处理各种格式的文件编程处理各种格式的文件1这世上,有成千上万种文件格式 压缩文件:7z,APK,ARC,ARJ,bzip2,cab,deb,DMG,GHO,gzip,jar,RAR,tar,Z,zip 图像设计文件:3dxml,ASM,DWF,DWG,GBR,AI,CDR,PSD,PDF,BMP,DIB,GIF,ICO,JPEG,MNG,PCX,EPS,SVG,3DS,C4D 文档文件:DOC,DOCX,HTML,ABF,FNT,OTF,TTF,WOFF,XLS,XLSX,PPT,PPTX.131310.5 10.5 编程处理各种格式的文件编程处理各种格式的文件141410.5 10.5 编程处理各种格式的文件编程处理各种格式的文件2了解文件格式的网站 维基百科(支持中文):https:/en.wikipedia.org/wiki/List_of_file_formats https:/en.wikipedia.org/wiki/List_of_filename_extensions_(alphabetical)Extension.info:http:/www.extension.info/File extension database:http:/ 10.5 编程处理各种格式的文件编程处理各种格式的文件2了解文件格式的网站 FileDesc(支持中文):http:/ FileExtension.info:http:/fileextension.info/F(支持中文):http:/ FileI:http:/ File Extension:http:/www.file- Formats:http:/ Wotsit.org:http:/devel.archefire.org/mirrors/www.wotsit.org/161610.5 10.5 编程处理各种格式的文件编程处理各种格式的文件3这伙计,开源了一个检测文件格式的程序 http:/putec.ch/projekte/filerecon/171710.5 10.5 编程处理各种格式的文件编程处理各种格式的文件4找到文件格式的说明,才能处理它ZIP文件MIDI文件RIFF文件181810.5 10.5 编程处理各种格式的文件编程处理各种格式的文件【例10.5】显示24位位图文件信息。191910.5 10.5 编程处理各种格式的文件编程处理各种格式的文件例题分析24位位图文件由文件头、位图信息头和图形数据三部分组成。文件头主要包含文件大小、文件类型、图像数据偏离文件头的长度等信息;位图信息头包含图像尺寸信息、图像像素字节数、是否压缩、图像所用颜色数等信息(http:/devel.archefire.org/mirrors/www.wotsit.org/网站上有各种图形图像、音频视频、文档文件格式的说明)。根据位图文件格式定义文件头、位图信息头结构体类型,从位图文件读取结构体数据从而得到位图文件信息。202010.5 10.5 编程处理各种格式的文件编程处理各种格式的文件5BMP位图文件格式 https:/en.wikipedia.org/wiki/BMP_file_format212110.3.5 10.3.5 读写数据块读写数据块例10.51#include#include 2#pragma pack(1)#pragma pack(1)/结构体按1个字节对齐/结构体按1个字节对齐3 typedef structtypedef struct tagBITMAPFILEHEADERtagBITMAPFILEHEADER /文件头/文件头4 unsigned shortunsigned short bfTypebfType;/文件类型,固定为BM/文件类型,固定为BM5 unsigned intunsigned intbfSizebfSize;/文件大小(字节)/文件大小(字节)6 unsigned shortunsigned short bfReserved1bfReserved1;/保留/保留7 unsigned shortunsigned short bfReserved2bfReserved2;/保留/保留8 unsigned intunsigned intbfOffBitsbfOffBits;/位图数据到文件头的偏移位置/位图数据到文件头的偏移位置9 BITMAPFILEHEADERBITMAPFILEHEADER;10 typedef structtypedef struct tagBITMAPINFOHEADERtagBITMAPINFOHEADER /位图信息头/位图信息头11 unsigned intunsigned int biSizebiSize;/位图信息头的长度/位图信息头的长度12 longlong biWidthbiWidth;/位图的宽度,以像素为单位/位图的宽度,以像素为单位13 longlong biHeightbiHeight;/位图的高度,以像素为单位/位图的高度,以像素为单位14 unsigned shortunsigned short biPlanesbiPlanes;/位图的位面数/位图的位面数15 unsigned shortunsigned short biBitCountbiBitCount;/每个像素的位数/每个像素的位数222210.3.5 10.3.5 读写数据块读写数据块例10.516 unsigned intunsigned int biCompressionbiCompression;/数据压缩类型/数据压缩类型17 unsigned intunsigned int biSizeImagebiSizeImage;/位图数据大小(字节)/位图数据大小(字节)18 longlong biXPelsPerMeterbiXPelsPerMeter;/水平分辨率(像素/米)/水平分辨率(像素/米)19 longlong biYPelsPerMeterbiYPelsPerMeter;/垂直分辨率(像素/米)/垂直分辨率(像素/米)20 unsigned intunsigned int biClrUsedbiClrUsed;/位图使用的颜色数/位图使用的颜色数21 unsigned intunsigned int biClrImportantbiClrImportant;/调色板规范/调色板规范22 BITMAPINFOHEADERBITMAPINFOHEADER;23 intint mainmain()()24 25 BITMAPFILEHEADER bmfhBITMAPFILEHEADER bmfh;26 BITMAPINFOHEADER bmihBITMAPINFOHEADER bmih;27 FILEFILE*bmpbmp;28 printfprintf(%d,%d(%d,%dnn,sizeofsizeof(BITMAPFILEHEADERBITMAPFILEHEADER),),sizeofsizeof(BITMAPINFOHEADERBITMAPINFOHEADER););29 bmpbmp=fopenfopen(car.bmp,rb);(car.bmp,rb);232310.3.5 10.3.5 读写数据块读写数据块例10.530 ifif(bmpbmp!=!=NULLNULL)31 freadfread(&(&bmfhbmfh,sizeofsizeof(BITMAPFILEHEADERBITMAPFILEHEADER),),1 1,bmpbmp););32 freadfread(&(&bmihbmih,sizeofsizeof(BITMAPINFOHEADERBITMAPINFOHEADER),),1 1,bmpbmp););33 printfprintf(位图宽=%d,高=%d(位图宽=%d,高=%dnn,bmihbmih.biWidthbiWidth,bmihbmih.biHeightbiHeight););34 fclosefclose(bmpbmp););35 36 returnreturn 0 0;37 结束结束

    注意事项

    本文(C程序设计C程序设计 (96).pdf)为本站会员(刘静)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开