MyOD
od -tx -tc 功能
实现效果
myod.c 代码(可将tx,tc函数单独贴在另外两个.c文件中)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ncurses.h>
void tc(FILE *file);
void tx(FILE *file);
int main(int argc,char *argv[]){
initscr();
FILE *file=fopen("./main.c","r");
tx(file);
rewind(file);
tc(file);
refresh();
getch();
endwin();
return 0;
}
void tc(FILE *file)
{
move(1,0);
refresh();
char ch[18];
int i=0,j=0;
while(fgets(ch,17,file)!=NULL){
printw(" ");
j++;
for(i=0;i<16;i++){
if(ch[i]=='\n'){
i++;
printw(" ");
printw("\\n");
}
if(ch[i]=='\t'){
if(ch[i+1]!='\t'){
i++;
}
printw(" ");
printw("\\t ");
}
if(ch[i]=='\0')
break;
if(ch[i]!='\t'){
printw(" %c ", ch[i]);
}
}
move(1+j*2,0);
}
}
void tx(FILE *file)
{
//Initialize the coordinates
//Set the position
move(0,0);
refresh();
char ch[18];
int i,j=1;
while(fgets(ch,17,file)!=NULL){
printw("%07o",16*(j-1));
for(i=0;i<16;i++){
if(i%4==0){
printw(" ");
}
if(ch[i]=='\n'){
i++;
printw("%02x",'\n');
}
if(ch[i]=='\0')
break;
printw("%02x",ch[i]);
if(i%4==3){
printw(" ");
}
}
move(j*2,0);
j++;
}
printw("%07o",16*(j-1)+i);
}