首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

关于apue里头的第3.2 例子, 创建一个具有空洞的文件

2013-06-25 
关于apue里面的第3.2 例子, 创建一个具有空洞的文件我是这样写的, 为什么出错?#include sys/types.h#inc

关于apue里面的第3.2 例子, 创建一个具有空洞的文件
我是这样写的, 为什么出错?

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>      //上面三个是open(),write(), lseek()
#include <stdio.h>
#include <stdlib.h>
#define FILE_MODE (S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH)//所有者有可读写,其余为可读
int main()
{
        //先设置两个要写入的内容
        char buf1[] = "123456789";
        char buf2[] = "qwertyuio";      //都是9个字节
        //打开一个文件
        int fp = open("test.txt",(O_CREAT | O_WRONLY | O_TRUNC), FILE_MODE);
//      int fp = creat("liweigan.txt", FILE_MODE);
        if(fp < 0)
        {
                printf("创建文件出错!\n");
                exit (1);
        }
        //记得有多个模式时要加括号括起来
        //打开后,就读入数据,用write()
        if(write(fp, buf1, 9) != 9);
        {
                printf("第一次写入出错!\n");
                exit (1);
        }
        //写入成功后,lseek中的指向为指向了文件尾,即文件中9字节处
        if(lseek(fp, 50, SEEK_SET) == -1)//设置文件的新读写位置
        {
                printf("设置读写位置出错\n");
                exit (1);
        }
        //之后用write在新位置写入
        if(write(fp, buf2, 9) != 9)
        {
                printf("第二次写入出错!\n");
                exit (1);
        }
        //到目前为止,文件的读写位置为9+50+9个字节处
        close(fp);
        return 0;
}
linux? FILE_MODE APUE 创一个具有空洞的文件


[解决办法]
再仔细点儿吧。 



if(write(fp, buf1, 9) != 9)//;
        {
                printf("第一次写入出错!\n");
                exit (1);
        }

热点排行