过关检测-Lv4_文件I/O精讲

  1. 下列哪种打开文件的方式不能修改文件已有的内容 ( B )
    A r+
    B r
    C w+
    D a+

  2. 以读写方式打开一个已存在的标准I/O流时应指定哪个mode参数( B )
    A r
    B r+
    C w+
    D a+

  3. 下列哪个是不带缓存的( C )
    A stdin
    B stdout
    C stderr
    D 都不是

  4. 如果键盘输入为abcdef,程序如下所示,打印结果应该是(A )
    char buffer[6];

    ……

    fgets(buffer, 6, stdin);

    printf(“%s”, buffer);
    A abcde
    B abcdef
    C abcdef 后出现乱码
    D 段错误

  5. 用open( )创建新文件时,若该文件存在则可以返回错误信息的参数是 ( B )
    A O_CREAT
    B O_EXCL
    C O_TRUNC
    D O_NOCTTY

  6. fread()返回值的含义是( B )
    A 读取的字节数
    B 读取的对象数
    C 缓冲区的首地址
    D 0

  7. 指出静态库和共享库的区别(使用方法,对程序的影响)
    静态库在程序编译时会被连接到目标代码中,程序运行时将不再需要该静态库,因此体积较大。
    动态库在程序编译时并不会被连接到目标代码中,而是在程序运行是才被载入,因此在程序运行时还需要动态库存在,因此代码体积较小。

  8. 标准IO和文件IO的区别
    标准IO(库函数):带缓存的IO:高级IO,通过库函数的方式对文件进行操作,数据被暂时存储到缓存区中,直到满足一定条件时,才会真正写入磁盘
    优点:及时可以减少对磁盘的访问次数,有利于保护磁盘
    缺点:数据不会实时写入,可能会导致数据丢失
    文件IO(系统调用):无缓存文件系统(低级磁盘IO), 通过系统调用的方式对文件进行操作,没有用户缓存区,数据实时写入磁盘
    优点:数据实时写入磁盘
    缺点:增加对磁盘的访问次数,不有利于保护磁盘

  9. 用文件IO分别实现标准IO中的(r, r+, w, w+, a, a+),文件名由argv[1]传入程序.
    r: open(argv[1],O_RDONLY);
    r+: open (argv[1],O_RDWR);
    w: open(argv[1],O_WRONLY | O_CREAT | O_TRUNC,0666);
    w+: open(argv[1],O_RDWR | O_CREAT | O_TRUNC,0666);
    a: open(argv[1],O_WRONLY | O_CREAT | O_APPEND,0666);
    a+: open(argv[1],O_RDWR | O_CREAT | O_APPEND,0666);

  10. 用文件IO分别实现标准IO中的(r, r+, w, w+, a, a+),文件名由argv[1]传入程序.(O_RDONLY, O_WRONLY, O_RDWR, O_CREAT, O_TRUNC, O_APPEND)打开一个文件,并读取从第100字节开始的50字节数据。

    #define N 1024
     
    int main(int argc, const char *argv[a])
    {
        int fd;
        char buf[N] = {0};
     
        if(argc < 2)
        {
            printf("Input Error %s <file>",argv[0]);
            return -1;
        }
     
        if( (fd = open(argv[1], O_RDONLY)) == -1 )
        {
            perror("open");
            return -1;
        }
     
        lseek(fd, 100, SEEK_SET);
     
        if(read(fd, buf, 50) !=50)
        {
            perror("read");
            return -1;
        }
     
        printf(" %s\n",buf);
     
        return 0;
    
    }
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值