shell实现 ( cp, ls, )
cp命令_fread, fwrite
1 /*2 * FILE: p673_cp.c3 * DATE: 201801244 * ==============5 */6 7 #include <stdio.h>8 9 #define BUFFSIZE 12810 11 int main(int argc, char *argv[])12 { 13 FILE *fp1, *fp2;14 char buf[BUFFSIZE];15 int len;16 17 if(argc != 3)18 fprintf(stderr, "Usage: ./mycp SOURCE DEST\n");19 // fopen 打开源文件20 if((fp1=fopen(argv[1], "r")) == NULL)21 perror("faile to fopen");22 // fopen 目标文件,若不存在则创建23 fp2 = fopen(argv[2], "w");24 25 // 循环读写26 while((len=fread(buf, sizeof(char), BUFFSIZE, fp1)) > 0)27 fwrite(buf, sizeof(char), len, fp2);28 29 fclose(fp1);30 fclose(fp2);31 return 0;32 }
cp命令_fgetc, fputc
1 #include <stdio.h>2 3 int main(int argc, char *argv[])4 {5 FILE *fp1, *fp2;6 int c;7 8 fp1 = fopen(argv[1], "r");9 fp2 = fopen(argv[2], "w");10 11 while((c=fgetc(fp1)) != EOF)12 {13 fputc(c, fp2);14 fputc(c, stdout);15 }16 17 fclose(fp1);18 fclose(fp2);19 20 return 0;21 }
cp命令_fgets, fputs
1 #include <stdio.h>2 #include <string.h>3 4 #define BUFFSIZE 1285 6 int main(int argc, char *argv[])7 {8 FILE *fp1, *fp2;9 char buf[BUFFSIZE];10 11 fp1 = fopen(argv[1], "r");12 fp2 = fopen(argv[2], "w");13 14 while(fgets(buf, BUFFSIZE, fp1) != NULL)15 {16 int len = strlen(buf);17 fputs(buf, fp2);18 buf[len-1] = '\0'; // 去除换行符19 fprintf(stdout, "%s - %d\n", buf, len-1);20 }21 return 0;22 }
ls命令
1 /*2 * FILE: p606_ls.c3 * DATE: 201801244 * ==============5 */6 7 #include <stdio.h>8 #include <stdlib.h> // exit9 #include <unistd.h> // STDOUT_FILENO10 #include <string.h>11 #include <dirent.h> // opendir12 13 void myls(char *ptr);14 15 int main(int argc, char *argv[])16 {17 if(argc != 2)18 {19 fprintf(stderr, "Usage: ./build path\n");20 exit(-1);21 }22 myls(argv[1]);23 return 0;24 }25 26 void myls(char *path)27 {28 DIR *dir;29 struct dirent *ptr;30 int count = 0;31 32 // opendir 打开目录 33 if((dir=opendir(path)) == NULL)34 perror("fail to opendir");35 36 // 顺序读取每一个目录项37 while((ptr=readdir(dir)) != NULL)38 {39 // 跳过“.”和“..”两个目录40 if(strcmp(ptr->d_name, ".")==0 || strcmp(ptr->d_name, "..")==0)41 continue;42 printf("%s\t", ptr->d_name);43 count++;44 // 一行显示5个45 if(count!=0 && count%5==0)46 printf("\n");47 //write(STDOUT_FILENO, "\n", 1); // 不可48 }49 // closedir 关闭目录50 closedir(dir); // 注意一定要关闭目录51 printf("\n");52 }
shell实现 ( cp, ls, )相关推荐
- linux shell 用cp -f 还是有覆盖提醒
2019独角兽企业重金招聘Python工程师标准>>> 今天写个脚本:linux shell 用cp -f 还是有覆盖提醒. 搜了一下:找到原因和解决办法: 推荐:用2,3种方法. ...
- linux shell mv/cp 错误: will not overwrite just-created <filename> with <sameFilename> 解决方法
运行shell脚本时,mv/cp时出现如下提示: mv: will not overwrite just-created <filename> with <sameFilename& ...
- 基础命令之cd,mkdir,cp,ls
只记录一下自己不太熟的命令. cd (change directory)切换目录命令..直接用cd则输入到用户家目录下,cd ~和cd一样.cd ~sunjiebin则代表切换到sunjiebin用户 ...
- linux cp命令 通配符,关于shell:cp和mv中的Linux通配符用法
我正在编写一个脚本来处理20个文件. 它们全部位于不同的目录中. 我有部分文件名. 在日志目录中,File1_Date_time.err更改为File1__Date_time_orig.err cd ...
- Linux shell命令 cp 加上-f还是提示是否覆盖
这是由于环境变量中有 allias cp='cp -i' 为了去掉这个系统自带的别名,能够使用grep -r --include="*" "alias cp" ...
- linux ls命令shell脚本位置,linux - shell脚本到ls并在ls上执行命令结果 - SO中文参考 - www.soinside.com...
我在ubuntu的文件夹中有一个文件夹列表.即.在/ mnt / source / customcode / files / brands /下 root@a919794ec280:/mnt/sour ...
- shell命令:ls命令
ls: #按文件从大到小: ls -S# 按文件从小到大 ls -Srls -Srlh 输出000.mp3到049.mp3: ls | grep .*[0-4][0-9].mp3 | tr " ...
- python自带的shell是什么-python shell是什么东西
python shell是Python的命令行. shell中最常用的是ls命令,python对应的写法是:os.listdir(dirname),这个函数返回字符串列表,里面是所有的文件名,不过不包 ...
- python自带的shell是什么-python shell是什么东西?
茅侃侃 是Python的命令行.shell中最常用的是ls命令,python对应的写法是:os.listdir(dirname),这个函数返回字符串列表,里面是所有的文件名,不过不包含".& ...
最新文章
- Self-Orthogonality Module:一个即插即用的核正交化模块
- LeetCode 64 最小路径和
- 用python求期望_Python——EM(期望极大算法)教学(附详细代码与注解)
- lesson3 一阶线性常微分方程解法
- VC++实现快速截屏
- 操作系统---高响应比优先调度算法实例
- java复制pdf_java – 使用iText复制带注释的PDF
- 51单片机C语言延时函数怎么定义和使用
- 【数据库实验一】基础操作
- S5P6818裸机开发(1)-启动过程分析
- 蒸烤一体机哪个品牌好性价比高,盘点国内消费者呼声最高的品牌推荐
- turtle---见证小海龟的浪漫之画
- Linux网卡丢包分类整理(1)——网卡篇
- jquery ajax json文件,jQuery ajax读取本地json文件
- 美的智能SPA微气泡可视化冲牙器体验
- Mac录屏,同时保留声音
- APP安全漏洞学习笔记
- 清华计算机专业考研经验谈
- android TP
- 玩课网计算机基础课后答案,计算机类MOOC教学研讨会暨中国高校CMOOC联盟云南省工作委员会成立大会在昆明理工大学举行...