集训第一天所学
第一天我们主要学习了文件编程的相关知识
1.不带缓存的(系统调用)-文件访问:
主要学习了open,read,write,lseek函数的运用。
2.带缓存的(库函数)- 文件访问
主要学习了fopen,fread,fwrite,fseek.
3.不带缓存的I/O对是文件描述符操作,带缓存的I/O是针对流的。
标准I/O库就是带缓存的I/O,它由ANSI C标准说明。当然,标准I/O最终都会调用上面的I/O例程。
标准I/O库代替用户处理很多细节,比如缓存分配、以优化长度执行I/O等。
4.对于lseek成功返回返回移动后指针距离文件开头的长度,对于fseek成功返回0.
之后我们讲了测试了不带缓存与带缓存下文件的长度,代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int main(int argc, char *argv[])
{
int length;
}
5.然后我们还讲了不带缓存下实现一个文件到另外一个文件的拷贝,代码如下:
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int fd;
char buf[32] = {0};
//int ret;
ssize_t ret;
}
6.void perror(const char *s); perror (“open_port”);
包含头文件(不可以掉了这个头文件):
#include <stdio.h>//包含perror的头文件
函数说明
perror ( )用 来 将 上 一 个 函 数 发 生 错 误 的 原 因 输 出 到 标 准 设备 (stderr) 。参数 s 所指的字符串会先打印出,后面再加上错误原因字符串。此错误原因依照全局变量error 的值来决定要输出的字符串。在库函数中有个error变量,每个error值对应着以字符串表示的错误类型。当你调用"某些"函数出错时,该函数已经重新设置了error的值。perror函数只是将你输入的一些信息和现在的error所对应的错误一起输出。
7. man后参数(数字或者字母)作用介绍
8.man后面参数(数字或者字母)作用
1是普通的命令
2是系统调用,如open,write之类的(通过这个,至少可以很方便的查到调用这个函数,需要加什么头文件)
3是库函数,如printf,fread
4是特殊文件,也就是/dev下的各种设备文件
5是指文件的格式,比如passwd,就会说明这个文件中各个字段的含义
6是给游戏留的,由各个游戏自己定义
7是附件还有一些变量,比如向environ这种全局变量在这里就有说明
8是系统管理用的命令,这些命令只能由root使用,如ifconfig
n新文档,可能要移到更适合的领域。
o老文档,可能会在一段期限内保留。
l本地文档,与本特定系统有关的。
之后我发现自己对于函数用法还掌握的不熟练,应勤加记忆。
收获:
(1)我发现缓存区到磁盘实现的都是write操作,
反之磁盘到缓冲区则是read操作,且缓冲区属于内存,两个操作都是在内存和磁盘间操作。
(2)read函数读完数据后值为0,但也可以是所读完的数据的长度。
自我评价:多敲代码,上课多做笔记。
总结
- 上一篇: 单链表之无头和有头--逆序
- 下一篇: 集训2--进程控制理论