C语言-C语言程序设计-Function-fopen
C语言-C语言程序设计-Function-fopen
直接抄的书上的,编译没过,应该和系统有关,用的windows系统去编译unix上的函数。
就功能理解上还是可以的,所以没有在去linux上重新编译。
#include <stdio.h> #include <stdlib.h> #include <fcntl.h> #include "sys/fcntl.h" int main() { printf("Hello world!\n"); return 0; } #define PERMS 0666 /* 所有者、所有者组和其他成员都可以读写*/ /*fopen 函数: 打开文件,并返回文件指针 */ FILE* fopen(char *name, char *mode) { int fd; FILE* fp; if(*mode != 'r' && *mode != 'w' && *mode != 'a') return NULL; for(fp = _iob; fp < _iob + OPEN_MAX; fp++) if((fp->flag &(_READ | _WRITE)) == 0) break; /*寻找一个空闲位*/ if(fp >= _iob + OPEN_MAX) /*没有空闲位置*/ return NULL; if(*mode == 'w') fd = create(name, PERMS); else if(*mode == 'a'){ if((fd = open(name, O_WRONLY, 0)) == -1) fd = create(name, PERMS); lseek(fd, 0L, 2); } else fd = open(name, O_RDONLY, 0); if(fd == -1) return NULL; fp->fd = fd; fp->cnt = 0; fp->base = NULL; fp->flag = (*mode == 'r') ? _READ : _WRITE; return fp; } /* 以上未涉及标准C的所有访问模式。 不能识别标识二进制访问方式的b标志 不能识别允许同时进行读和些的+标志 */
本文来自博客园,作者:Theseus‘Ship,转载请注明原文链接:https://www.cnblogs.com/yongchao/p/13972518.html
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步