1.
代码:
1 #include<myhead.h>
2 int main(int argc, const char *argv[])
3 {
4 if(argc!=3)
5 {
6 printf("input file error\n");
7 printf("usage:./a.out srcfile dstfile\n");
8 return -1;
9 }
10 //定义指针分别指向两个文件
11 FILE *fp=NULL;
12 fp=fopen(argv[1],"r");
13 if(fp==NULL)
14 {
15 printf("fp fopen error");
16 return -1;
17 }
18 FILE *rfp=NULL;
19 rfp=fopen(argv[2],"w");
20 if(rfp==NULL)
21 {
22 printf("rfp fopen error");
23 return -1;
24 }
25 char buf=0;
26 while(1)
27 {
28 buf=fgetc(fp);
29 //当复制到结尾符号EOF时停止
30 if(buf==EOF)
31 break;
32 char a=0;
33 fputc(buf,rfp);
34 }
35 fclose(fp);
36 fclose(rfp);
37 printf("success\n");
38 return 0;
39 }
运行结果:
2.
代码:
1 #include<myhead.h>
2 int main(int argc, const char *argv[])
3 {
4 if(argc!=3)
5 {
6 printf("input file error\n");
7 printf("usage:./a.out srcfile dstfile\n");
8 return -1;
9 }
10 //定义指针分别指向两个文件
11 int fp=-1;
12 fp=open(argv[1],O_RDONLY);
13 if(fp==-1)
14 {
15 printf("fp open error");
16 return -1;
17 }
18 int rfp=-1;
19 rfp=open(argv[2],O_WRONLY | O_CREAT | O_TRUNC,0664);
20 if(rfp==-1)
21 {
22 printf("rfp open error");
23 return -1;
24 }
25
26 char buf[64]="";
27 //循环输入输出
28 while(1)
29 {
30 memset(buf,0,sizeof(buf));
31 int res=read(fp,buf,sizeof(buf));
32 if(res==0)
33 break;
34 write(rfp,buf,res);
35
36 }
37 //关闭文件
38 close(fp);
39 close(rfp);
40 return 0;
41 }
运行结果:
3.
代码:
1 #include<myhead.h>
2
3 int main(int argc, const char *argv[])
4 {
5 //定义文件属性类型的数据
6 struct stat sb; //用于存储获得的文件属性
7
8 //调用函数的到文件属性
9 stat(argv[1], &sb);
10
11 switch(sb.st_mode&S_IFMT)
12 {
13 case S_IFSOCK:
14 {
15 printf("这是套接字文件\t");
16 }
17 break;
18 case S_IFLNK:
19 {
20 printf("这是链接文件\t");
21 }
22 break;
23 case S_IFREG:
24 {
25 printf("这是普通文件\t");
26 }
27 break;
28 case S_IFBLK:
29 {
30 printf("这是块设备文件\t");
31 }
32 break;
33 case S_IFDIR:
34 {
35 printf("这是目录文件\t");
36 }
37 break;
38 case S_IFCHR:
39 {
40 printf("这是字符设备文件\t");
41 }
42 break;
43 case S_IFIFO:
44 {
45 printf("这是管道文件\t");
46 }
47 break;
48
49 }
51 printf("%#o\t%ld\t%ld\n", sb.st_mode&0777, sb.st_size, sb.st_ino);
52
53 return 0;
54 }
运行结果:
4.
代码:
1 #include<myhead.h>
2
3 int main(int argc, const char *argv[])
4 {
5 //判断外部传参个数
6 if(argc != 2)
7 {
8 printf("input error\n");
9 printf("usage:./a.out name\n");
10 return -1;
11 }
12 DIR *fp=NULL;
13 //打开目录
14 if((dp=opendir(argv[1]))==NULL)
15 {
16 perror("opendir error");
17 return -1;
18 }
19
20 //读取目录中的文件或目录信息
21 struct dirent *sdp=NULL;
22 while((sdp = readdir(dp))!=NULL)
23 {
24 //输出当前文件或目录信息
25 printf("inode:%10ld, size:%10d, %10s, ",\
26 sdp->d_ino, sdp->d_reclen, sdp->d_name);
27 //输出类型
28 switch(sdp->d_type)
29 {
30 case DT_BLK:
31 {
32 printf("b\n");
33 }
34 break;
35 case DT_CHR:
36 {
37 printf("c\n");
38 }
39 break;
40
41 case DT_DIR:
42 {
43 printf("d\n");
44 }
45 break;
46
47 case DT_FIFO:
48 {
49 printf("p\n");
50 }
51 break;
52 case DT_LNK:
53 {
54 printf("l\n");
55 }
56 break;
57 case DT_REG:
58 {
59 printf("-\n");
60 }
61 break;
62 case DT_SOCK:
63 {
64 printf("s\n");
65 }
66 break;
67 }
68 }
69 //关闭目录
70 closedir(dp);
71 return 0;
72 }
运行结果: