MyOD编程(选做)
MyOD编程
任务要求
-
复习c文件处理内容
-
编写myod.c 用myod XXX实现Linux下od -tx -tc XXX的功能
-
main与其他分开,制作静态库和动态库
-
编写Makefile
-
提交测试代码和运行结果截图, 提交调试过程截图,要全屏,包含自己的学号
代码:
myod.c
主要实现读取和关闭文件
#include<stdio.h>#include<stdlib.h>#include<string.h>int main(){//char filepath[100];FILE *fp;fp=fopen("test.txt","rb");if(fp==NULL){printf("Failure to open file\n");return 0;}char ch;char STR[1000];int i,n;i=0;while((ch=fgetc(fp))!=EOF){STR[i]=ch;i++;//putchar(ch);}STR[i]='\0';//printf("%d",i);fclose(fp);od(STR,i);}
od.c
用于实现文件中字符逐个输出以及od -tx -tc 的功能
#include"head.h"-
od.c
用于实现文件中字符逐个输出以及od -tx -tc 的功能
#include"head.h"#include<stdio.h>#include<stdlib.h>#include<string.h>void od(char STR[1000],int i){int k=1;int j=0;int m=0;int line=0;printf("%06d ",line);putchar(STR[0]);for(k=1;k<=i;k++){if(k%16!=0&&STR[k]!='\0'){if(STR[k]!='\n'){printf(" %2c",STR[k]);continue;}else{printf(" \\n");continue;}}else{printf("\n ");for(j=m;j<k;j++){printf(" %02x",STR[j]);}printf("\n%06d",k+2);m=k;}}printf("\n");}


需要注意得是要先取消myod.c中对od.c的调用,在myod.c中输出字符,输出文件正常,发现问题出现在od.c中,再在od.c中用cgdb调试,发现是在逐个输出字符的循环中有问题,解决完后能正常输出字符。

浙公网安备 33010602011771号