使用标准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;
}