《C语言及程序设计》实践参考——二进制文件浏览器
来源:互联网 发布:梦想海贼王转盘数据 编辑:程序博客网 时间:2024/06/05 03:32
返回:贺老师课程教学链接
【项目5 - 二进制文件浏览器】
(1)做一个类似BinaryViewer的查看二进制文件的程序,输入文件名后,可以以16进制和ASCII对照的方式列出该文件的内容,可以参考下图:
提示:循环中,一次读入16个字节,先用16进制形式输出,再用字符形式输出。
[参考解答]
#include <stdio.h>#include <stdlib.h>#include <ctype.h>int main( ){ char c[16]; char f[100]; int i; printf("请输入文件名:"); scanf("%s", f); FILE *fp; if ((fp=fopen(f,"rb"))==NULL) { printf("connot open\n"); exit(1); } while(!feof(fp)) { fread(c,16,1,fp); if(!feof(fp)) { for(i=0; i<16; ++i) printf("%02x ", (int)c[i]); printf("\t"); for(i=0; i<16; ++i) printf("%c", ((isdigit(c[i])||isalpha(c[i]))?c[i]:'.')); printf("\n"); } } fclose(fp); return 0;}
(2)通过为main函数加参数,在命令行方式下,输入“命令加文件名”的方式,就可以显示该文件的内容,也采用如上16进制和ASCII对照的形式。
[参考解答]
#include <stdio.h>#include <stdlib.h>#include <ctype.h>int main(int argc, char *argv[]){ if( argc !=2) { printf("you must provide a filename in command line.\n"); exit(1); } char c[16]; int i; FILE *fp; if ((fp=fopen(argv[1],"rb"))==NULL) { printf("connot open\n"); exit(1); } while(!feof(fp)) { fread(c,16,1,fp); if(!feof(fp)) { for(i=0; i<16; ++i) printf("%02x ", (int)c[i]); printf("\t"); for(i=0; i<16; ++i) printf("%c", ((isdigit(c[i])||isalpha(c[i]))?c[i]:'.')); printf("\n"); } } fclose(fp); return 0;}
0 0
- 《C语言及程序设计》实践参考——二进制文件浏览器
- 《C语言及程序设计》实践参考——输出点阵图
- 《C语言及程序设计》实践参考——电阻并联
- 《C语言及程序设计》实践参考——正差值
- 《C语言及程序设计》实践参考——发工资
- 《C语言及程序设计》实践参考——玩数字
- 《C语言及程序设计》实践参考——坐标转换
- 《C语言及程序设计》实践参考——构造菜单
- 《C语言及程序设计》实践参考——投票表决器
- 《C语言及程序设计》实践参考——成绩等级
- 《C语言及程序设计》实践参考——求阶乘
- 《C语言及程序设计》实践参考——另类求和
- 《C语言及程序设计》实践参考——Bessel函数
- 《C语言及程序设计》实践参考——转着圈加密
- 《C语言及程序设计》实践参考——血型统计
- 《C语言及程序设计》实践参考——大奖赛计分
- 《C语言及程序设计》实践参考——打豆豆
- 《C语言及程序设计》实践参考——完数
- 创建,删除文件或文件夹及判断其是否存在
- 程序员编程生涯中会犯的7个错误
- 关于“被继承的样式特性值为0”的理解
- jyphon 环境变量配置
- linux下mysql忘记密码解决办法
- 《C语言及程序设计》实践参考——二进制文件浏览器
- Mac 键盘快捷键
- ADB server didn't ACK failed to start daemon
- Apple Swift编程语言入门教程
- 正则表达式-验证
- checkbox属性checked="checked"已有,但却不显示打勾的解决办法
- [leetcode][list] Remove Duplicates from Sorted List II
- vs2012使用经验
- 简单的算法---冒泡排序