可以用write或者fwrite,这两个函数用法相似度极高;
函数原型如下:
ssize_t write(int fd, const void *buf, size_t count);
ssize_t read(int fd, void *buf, size_t count);
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);
read/fread返回值:读普通文件时的返回值为读到的字节或者块数,读到末尾则返回0
C库版:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<unistd.h>
int main(void)
{
FILE *rfp = fopen("wrap.c","r");
FILE *wfp = fopen("wrapcy.c","w");
if(!rfp)
{
perror("rfopen error");
}
if(!rfp)
{
perror("wfopen error");
}
char buf[1024];
int n;
while(1)
{
memset(buf,0,sizeof(buf));
n = fread(buf,1,sizeof(buf),rfp);
if(n==0)
{
break;
}
fwrite(buf,1,n,wfp);
}
fclose(rfp);
fclose(wfp);
}
linux系统库版:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<fcntl.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<unistd.h>
int main(void)
{
int rfd = open("wrap.c",O_RDONLY);
int wfd = open("wrapcy.c",O_WRONLY | O_CREAT,0755);
if(rfd<0)
{
perror("ropen error");
}
if(rfd<0)
{
perror("wopen error");
}
char buf[1024];
int n;
while(1)
{
memset(buf,0,sizeof(buf));
n = read(rfd,buf,sizeof(buf));
if(n==0)
{
break;
}
write(wfd,buf,n);
}
close(rfd);
close(wfd);
}