C语言中的read和write怎么用?

Python018

C语言中的read和write怎么用?,第1张

1.纠正:

read和write是UNIX或者一些类UNIX系统,比如LINUX系统中使用的,称为LINUX系统函数。这种函数只能在特定的操作系统下使用,可移植性差。

fread和fwrite是C库函数。这种函数基本在任何操作系统都能使用,可移植性高。

2.基础知识介绍

只介绍LINUX系统函数,常用的有creat,open,close,read,write,lseek,access,一般用于文件编程

3.如何使用

谈到如何使用就必须说到另一个知识,文件描述符(file

description),是一个非负数。

函数原型:

int

read(int

fd,

const

void

*buf,

size_t

length)

功能:

从文件描述符fd所指向的文件中读取length个字节到buf所指向的缓存区中,返回值为实际读取的字节数

int

write(int

fd,

const

void

*buf,

size_t

length)

功能:

把length个字节从buf所指向的缓存区中写到件描述符fd所指向的文件中,返回值为实际写入的字节数

例子:

#define

LENGTH

1024

#define BUFFES_SIZE

1024

int

n1,

n2

int

fd1,

fd2

int

buffer[BUFFES_SIZE]

fd1

=

open(

"HEllo1.txt",

O_RDWR

|

O_CREAT,

O_IRUSE

|

O_IWUSR)

fd2

=

open(

"HEllo2.txt",

O_RDWR

|

O_CREAT,

O_IRUSE

|

O_IWUSR)

n1 =

read(

fd1,

buffer, LENGTH)

n2 =

write(

fd2,

buffer, n1)

好了累死了,答案完全原创,希望对你有帮助

read()函数的原型是int read(int fd,void *buf,int count)。它的功能是“从文件说明符fd相关联的文件中读取count个字符,并把这些字符存储到buf所指的缓冲区中。返回值是操作成功时所读到的字节数,在文件结束时可能少于count个字节;若返回值为-1则说明出错了,返回0则表示到达文件尾端。例:从文件ABC.txt中读取前100个字节存入数组buffer中——

#include "stdin.h"

#include "io.h"

#include "fcnt1.h"

int main(void){

int fd

char buffer[100]

if((fd=open("ABC.txt",O_RDONLY))==-1){

printf("Can't open file.\n")

exit(-1)

}

if(read(fd,buffer,100)!=100)

printf("Possible read error!\n")

}

for (j=0i<nj++) 这句话有问题

外层循环,i 的初始值是 1,从文件里读取的值比1大的时候,这个循环会变成死循环,等到循环到 j>=10000 的时候,a 数组就越界了,就会出错

所以,这个循环,你可能是想写 for (j=0j<nj++) 的,但是写成 for (j=0i<nj++) 了