c语言pread(x)函数,阅读与PREAD(),并在C

我的程序(如下)写(与PWRITE())文本PWRITE()写入到文件,并读取(与PREAD())从文件。我的问题是pread函数不能从文件中读取我的文本,关闭函数(程序的最后一部分)有什么问题?结果在第二部分。我的错误在哪里?阅读与PREAD(),并在C

#include

#include

#include

#include

#include

#include

int main()

{

int fd, nr, nr2, nw, nw2;

char fl_nm[]={"file_io/pwrite.txt"};

char buf_wr[]={"hello everyone this is first text\n"};

char buf_wr2[]={"Did you miss me? Don't afraid\n"};

char buf_rd[120];

char buf_rd2[120];

//open file

fd = open(fl_nm, O_RDWR|O_CREAT, 0777);

nw = pwrite(fd, &buf_wr, strlen(buf_wr), 14);

//error checking

if(fd == -1){

perror("[error in open]\n");

}

else if(nw == -1){

perror("[error in write]\n");

}

else{

/*if open and write process are okey, read first write data

* from file*/

nr = read(fd, &buf_rd, sizeof(buf_rd));

//display succeeded message about first write and open process

printf("[file is opened]\n");

printf("[succeeded write(1) process]\n");

//read process error control

if(nr == -1){

perror("[error in read]\n");

} else{

printf("[reading(1) data] from %s\n", fl_nm);

printf("[%s]\n", buf_rd);

}

}

//second write process.

nw2= pwrite(fd, &buf_wr2, strlen(buf_wr2), 30);

//write error checking

if(nw2 == -1){

perror("[error in write 2]\n");

}else{

/*if write process is correct

* second read process*/

nr2 = read(fd, &buf_rd2, sizeof(buf_rd));

printf("-----------------------------------\n");

printf("[succeeded write(2) process]\n");

printf("[reading(2) data] from %s\n", fl_nm);

printf("[%s]\n", buf_rd2);

}

//close file

close(fd);

//error checking for close process

if(close(fd) == -1){

perror("[error in close]\n");

}else{

printf("[succeeded in close]\n");

}

return 0;

}

结果:

$ gcc pwrite.c -o pwrite

$ ./pwrite

[file is opened]

[succeeded write(1) process]

[reading(1) data] from file_io/pwrite.txt

[]

-----------------------------------

[succeeded write(2) process]

[reading(2) data] from file_io/pwrite.txt

[]

[error in close]

: Bad file descriptor

2016-12-28

metarose

+0

每[标准](http://pubs.opengroup.org/onlinepubs/9699919799/functions/read:

相反,使用一个循环打印每个字节(),'pread()','write()'和'pwrite()'返回'ssize_t',而不是'int'。 –

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值