24.1.3 DAY3

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 }

运行结果:

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值