请问这个怎么做?编写一个 C 程序,print_bytes,它接受一个参数,一个文件名,它应该读取指定的文件并为文件的每个字节打印一行。该行应以十进制和十六进制显示字节。如果该字节是 ASCII 可打印字符,则还应打印其 ASCII 值。
假设 ASCII 可打印字符是那些ctype.h函数isprint返回非零值的字符。
代码如下:
#include <stdio.h>
#include <ctype.h>
int main(int argc, char *argv[])
{
int i=0;
unsigned char ch;
if(argc != 2)
{
printf("参数不满足要求"); //C语言参数包含程序名
return 0;
}
FILE *fp = fopen(argv[1],"r");
if (fp == 0)
{
printf("%s文件打开失败\n",argv[1]);
return 0;
}
while ((ch = fgetc(fp))!= EOF)
{
if(isprint(ch))
printf("byte %4d:%4u 0x%02x '%c'\n",i,ch,ch,ch);
else
printf("byte %4d:%4u 0x%02x\n",i,ch,ch);
i++;
}
fclose(fp);
return 0;
}