linux的od命令怎么用c语言来实现?(救急呀!分全拿出来了,大家帮帮忙!)

来源:百度知道 编辑:UC知道 时间:2024/06/17 12:39:12
今天搞了一天都没出来。请大家帮帮忙。
要求用C语言来实现linux的od命令。
只要求能实现十进制、八进制、十六进制和浮点数方式的输出。
但输出的格式要和od一样。
例如:
0000000 0303 5445 5850 4f52 543a 5630 392e 3032
0000020 2e30 300a 4445 5947 4c45 0a52 5553 4552
0000040 530a 3130 3234 0a30 0a33 320a 300a 0354
0000060 0354 07d0 0001 0000 0000 0000 0000 0005
0000100 0020 2020 2020 2020 2020 2020 2020 2020
0000120 2020 2020 2020 2020 2020 2020 2020 2020
0000140 2020 2020 2020 2020 2053 756e 2053 6570
0000160 2034 2031 313a 3238 3a33 3720 3230 3035
0000200 612e 646d 7000 0000 0000 0000 0000 0000
0000220 0000 0000 0000 0000 0000 0000 0000 0000
救急,请大家帮帮忙,我把剩的分数都拿出来了。
或者告诉我
第一列是什么东西?为什么有的相差20,有的相差40
另外,输出的数字是ASC2码吗?好像不太对呀?

没时间给你做。提示如下
od命令的位置参数选项很多,用c语言位置参数读入分析。

void main(int argc, char *argv[]){}
argc 里是读得的位置参数的个数,包括程序名。
argv[i]里是读得的位置参数的字符串。i=0 程序名,i=1参数1

分析方法,例如:
for (i=1;i<argc;i++){
if (strncmp(argv[i],"-d",2) == 0 ){
// Print as unsigned decimal shorts.
// 按无符号十进制 unsigned short int 输出
};
if (strncmp(argv[i],"-h",2) == 0 ){
// Print as hexadecimal shorts
// 按无符号十六进制 输出
};
。。。。
}

按二进制打开文件。读的顺序按输出要求,unsigned short int 是两个两个bytes. 浮点输出要考虑 选项 D,L,F,D,L是4个bytes,F是两个。

每16个bytes,作一行,第一列是相对地址--第几个byte,接下来 是值。
格式 %04x 就是4位十六进制, o 是八进制, d是十进制