服务好的武进网站建设,网站建设上传视频,网站分析欣赏,顺德做网站那家好文件的描述符和重定向 C语言的文件读写操作代码 open系统打开文件方法系统读写文件操作文件描述符文件重定向怎么理解文件缓冲区 C语言的文件读写操作 文件写入 fputs int fputs(const char *s, FILE *stream); s#xff1a;要写入的字符串 stream#xff1a;要写入对应的目标… 文件的描述符和重定向 C语言的文件读写操作代码 open系统打开文件方法系统读写文件操作文件描述符文件重定向怎么理解文件缓冲区 C语言的文件读写操作 文件写入 fputs int fputs(const char *s, FILE *stream); s要写入的字符串 stream要写入对应的目标文件 文件输出只可以在文件读的环境下运行 r fgets char *fgets(char *s, int size, FILE *stream); s要保存到的目标位置 size输出多少字节 stream输出的目标文件 文件写入 **fprintf int fprintf(FILE *stream, const char *format, …); stream写入的目标文件 format要写入的字符串 …代表可以写入多组 snprintf(将字符串写入数组不是文件写入)** int snprintf(char *str, size_t size, const char *format, …); str需要存入目标数组 size存取多大 format对应的字符串目标 二进制文件的输出输入 fread size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream); fwrite size_t fwrite(const void *ptr, size_t size, size_t nmemb,FILE *stream); 文件写入 fscanf函数会从文件输入流中读入数据存储到format中遇到空格和换行时结束。 fscanf int fscanf(FILE *stream, const char *format, …); stream写入对应目标文件 代码
#include stdio.h
#include fcntl.h
#include errno.h
#include string.h
#include sys/stat.h
#include unistd.h
#define LOG log.text
int main()
{//w:默认为写方式打开文件如果文件不存在就会创建出来FILE* fp fopen(LOG,w);if(fp NULL){perror(fopen);return 1;}//正常进行文件操作const char* msg hello new file;int cnt 1;char buffer[256];while(cnt){//C语言文件写操作//snprintf(buffer,sizeof(buffer),%s:%d:wh\n,msg,cnt);//printf(%s,buffer);//fprintf(fp,%s : %d : wh\n,msg,cnt);//fprintf(stdout,%s : %d : wh,msg,cnt); //fprintf(stdout,msg,NULL);//Linux一切皆文件stdout也对应一个文件显示器文件 fputs(msg,fp);--cnt;}char line[128];//只可以在读的环境下读取 rif(fgets(line,sizeof(line),fp) NULL){perror(fgets);}else printf(%s,line);fclose(fp);return 0;
}
open系统打开文件方法 open #include fcntl.h int open(const char *pathname, int flags); int open(const char *pathname, int flags, mode_t mode); pathname要创建的文件名 flags它的操作类型 O_RDONLY: 只读打开O_WRONLY: 只写打开O_RDWR : 读写打开 这三个常量必须指定一个且只能指定一个O_CREAT : 若文件不存在则创建它。需要使用mode选项来指明新文件的访问权限O_APPEND: 追加写 O_TRUNC清空文件所有内容 mode给文件设置权限 系统读写文件操作 文件写入 write #include unistd.h ssize_t write(int fildes, const void *buf, size_t nbyte); write返回写入多少个字节包括\0 文件读出 read #include unistd.h ssize_t read(int fd, void *buf, size_t count); close #include unistd.h int close(int fildes); 文件描述符 但用open打开或者创建一个文件的时候系统会给我们返回一个整数当返回 -1 时说明创建文件失败反之创建成功当创建成功时也会给我们返回一个整数值这个值我们称之为文件描述符 我们修改文件时都会用到操作符。 那么文件描述符是什么呢 文件描述符是一个数组下标代表的意义不同。 Linux进程默认情况下会有3个缺省打开的文件描述符分别是标准输入0 标准输出1 标准错误2 0,1,2对应的物理设备一般是键盘显示器显示器 所以当我们在新建文件后每个文件对应的描述符都是3这是因为前三个都被占用了 文件存储规则。 当标准输入、输出、错误都占用时文件会顺的数组顺序进行保存如果前0、1、2出现文件关闭时。那么当文件保存的时候就会优先前面空余的部分。 文件重定向 如果不想占用前三个我们可以手动更改标准输入、输出、错误的路径也可以通过函数dup2来更改。 linux重定向常见方式有1、标准输入输出重定向使用 ‘’ 或 ‘’ 符号实现2、标准错误重定向使用 ‘2’ 符号来实现3、输入流重定向使用 ‘’ 符号实现4、管道重定向使用 ‘|’ 符号实现。 手动更改 dup2()函数修改 int dup2(int oldfd, int newfd); oldfd覆盖nwefd 怎么理解文件缓冲区 显示器采用的刷新策略为行缓冲 文件采用的缓冲策略为全缓冲