zoukankan      html  css  js  c++  java
  • 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!
    ");
        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标志
        不能识别允许同时进行读和些的+标志
    */
    
    
  • 相关阅读:
    java基础—GUI编程(一)
    java基础—数组
    java基础—异常处理
    java基础—面向对象
    多线程(二)
    多线程(一)
    ORACLE数据库SQL语句的执行过程
    Jetty直接调试,不用部署,不用弄一些杂七杂八的设置
    (2.1)servlet线程安全问题
    (3)tomcat源代码分析环境的搭建
  • 原文地址:https://www.cnblogs.com/yongchao/p/13972518.html
Copyright © 2011-2022 走看看