myod 实验报告 20181209
实验报告 myod 20181209
实验要求
1.复习c文件处理内容编写myod.c
2.用myod XXX实现Linux下od -tx -tc XXX的功能
3.main与其他分开,制作静态库和动态库
4.编写Makefile
5.提交测试代码和运行结果截图, 提交调试过程截图,要全屏,包含自己的学号信息在博客园发表一篇博客,重点写遇到的问题和解决过程
实验过程
head.h
void hex16(char *name); void ascii(char *name);
myod.c
#include "head.h" #include <stdio.h> void main() { char name[50]; printf("please input the textname:"); scanf("%s", name); ascii(name); hex16(name); }
ascii.c
#include "head.h" #include <stdio.h> void ascii(char *name) { FILE *fp; char ch; printf("output the ascii:\n"); fp=fopen(name,"r"); ch=fgetc(fp); while (ch!=EOF) { if (ch=='\n') printf("\n"); else printf("%4d",ch); ch=fgetc(fp); } fclose(fp); }
hex.c
#include "head.h" #include <stdio.h> void hex(char *name) { FILE *fp; char ch; printf("output the hex:\n"); fp=fopen(name,"r"); ch=fgetc(fp); while (ch!=EOF) { if(ch=='\n') printf("\n"); else printf("%4x",ch); ch=fgetc(fp); } fclose(fp); }
实验结果
运行结果
静态库
动态库
makefile
实验心得
实验有些难度,请教室友帮助完成
c语言文件有些忘记
复习c文件处理内容
文件:能够存储数据的存储设备,文件其实是一系列的字节。文件通常存储到硬盘上。
文件中的位置:文件有开头和结尾,还有一个当前位置,通常定义为从文件头到当前位置有多少个字节。
文件流:流是外部数据或数据目的地的抽象表示,所以键盘、显示器上的命令行和磁盘文件都是流。
将数据写入流(即磁盘文件)有两种方式。
- 可以将数据写入文本文件,此时数据写入为字符,这些字符组织为数据行,每一行都用换行符结束。
- 可以将数据写入二进制文件。无论将数据写入文本文件还是二进制文件,不论它们是什么样的数据,这些数据最终都是一系列字节。
文件访问:
- 打开文件:fopen()
FILE *fopen(const char *name,const char *mode);
第一个变元是字符串指针,它是要处理的外部文件名称,它包含了文件名称字符串的地址。第二个变元也是一个字符串,称为文件模式,它指定对文件进行什么处理。
- 关闭文件:fclose()
fclose( FILE *fp );
返回值:如果成功关闭文件,就返回0,否则返回EOF。
- 写入文本文件:fputc()——将一个字符写入文本文件
fputc(int ch,FILE *pfile);
参数:将第一个变元指定的字符写入第二个变元(文件指针)指定的文件中。
返回值:如果操作成功,就返回写入的字符,否则返回EOF
- 读取文本文件:fgetc()
int mchar = fgetc(pfile);
fgetc()函数从打开的文本文件中读取一个字符。它将文件指针作为唯一的变元,把读取的字符返回int类型。
返回值:mchar变量int类型,因为如果到达文件尾,就返回EOF。
学习Linux下od命令
功能:以指定格式查看文件内容。可以以八进制、十进制、十六进制和ASCII码的格式来显示文件或者流,它们对于访问或可视地检查文件中不能直接显示在终端上的字符(如换行符等)很有用。此外,在一些有空洞的文件中可以通过od命令查看空洞的位置。
使用格式:
od [-A 地址进制] [-t 显示格式] 文件名
-A
( 地址进制)按指定的进制显示地址信息:
o:八进制(系统默认值) d:十进制 x:十六进制 n:不打印位移值
默认情况下,每行开头为当前读取到的字符数的7位八进制表示
-t
指定数据显示的格式:
c:ASCII字符或反斜杠序列(如\n) d:有符号十进制数 f:浮点数 o:八进制(系统默认值) u:无符号十进制数 x:十六进制数