读书人

关于apue里头的第3.2 例子 创建一个

发布时间: 2013-06-25 23:45:41 作者: rapoo

关于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);
}

读书人网 >C语言

热点推荐