使用标准IO进行文件拷贝
#include <myhead.h>
int main(int argc, const char *argv[])
{
if(argc!=3)//外部传参
{
printf("input error\n");
}
//定义两个文件指针
FILE *fp=NULL;
FILE *cfp=NULL;
if((fp=fopen(argv[1],"r"))==NULL)
{
perror("fopen error");
return -1;
}
if((cfp=fopen(argv[2],"w"))==NULL)
{
perror("fopen error");
return -1;
}
char buf[128]="";
int res;
//循环将读取到的数据写入另一个文件中
while((res=fread(buf,sizeof(char),sizeof(buf),fp))!=0)
{
fwrite(buf,sizeof(char),res,cfp);
}
fclose(fp);
fclose(cfp);
return 0;
}
使用文件IO进行文件拷贝
#include <myhead.h>
int main(int argc, const char *argv[])
{
if(argc!=3)//外部传参
{
printf("input error\n");
}
//定义两个文件描述符
int fd=-1;
int cfd=-1;
if((fd=open(argv[1],O_RDONLY))==-1)
{
perror("open error");
return -1;
}
if((cfd=open(argv[2],O_WRONLY|O_CREAT|O_TRUNC,0664))==-1)
{
perror("open error");
return -1;
}
char buf[128]="";
int res;
//将读到的数据循环写入另一个文件中
while((res=read(fd,buf,sizeof(buf)))!=0)
{
write(cfd,buf,res);
}
close(fd);
close(cfd);
return 0;
}
使用sata函数实现 ls -l 指令
#include <myhead.h>
int main(int argc, const char *argv[])
{
//定义文件属性类型的数据
struct stat sb;//用于储存获取的文件属性
stat(argv[1],&sb);//调用函数得到文件属性
switch(sb.st_mode&S_IFMT)
{
case S_IFSOCK:
{
printf("这是套接字文件\n");
}
break;
case S_IFLNK:
{
printf("这是链接文件\n");
}
break;
case S_IFREG:
{
printf("这是普通文件\n");
}
break;
case S_IFBLK:
{
printf("这是块设备文件\n");
}
break;
case S_IFDIR:
{
printf("这是目录文件\n");
}
break;
case S_IFCHR:
{
printf("这是字符设备文件\n");
}
break;
case S_IFIFO:
{
printf("这是管道文件\n");
}
break;
}
printf("%#o\t%ld\t%ld\n",sb.st_mode&0777,sb.st_size,sb.st_ino);
return 0;
}
使用opendir,closedir,readdir对目录操作
#include <myhead.h>
int main(int argc, const char *argv[])
{
if(argc!=2);
DIR *fd=NULL;
if((fd=opendir(argv[1]))==NULL)
{
perror("opendir error");
return -1;
}
//读取目录中的文件或目录的信息
struct dirent *sfd;
while((sfd=readdir(fd))!=NULL)
{
//输出当前文件或目录的信息
printf("name:%10s\t inode:%10ld\t 结构体大小:%10d ,dype:%d\n",sfd->d_name,sfd->d_ino,sfd->d_reclen,sfd->d_type);
//输出类型
switch(sfd->d_type)
{
case DT_BLK:
printf("b");
break;
case DT_CHR:
printf("c");
break;
case DT_DIR:
printf("d");
break;
case DT_FIFO:
printf("p");
break;
case DT_LNK:
printf("l");
break;
case DT_REG:
printf("-");
break;
case DT_SOCK:
printf("s");
break;
}
}
closedir(fd);
return 0;
}