Linux C/C++基础 文件(中)
1.ubuntu cat命令的实现
cat——查看或者合并文件内容

#include<stdio.h> int main(int argc,char* argv[])
{ //1.打开文件,文件路径,argv[1]
//2.读取文件的内容,将内容显示到屏幕
//3.关闭文件
FILE*fp=fopen(argv[],"r"); while()
{
if(feof(fp))
{
break;
}
ch=fgetc(fp);
printf("%c",ch);
}
fclose(fp);
fp=NULL;
return ;
}

上面实现了cat的功能,但是在执行的时候还需要加./
下面将mycat加入到bin目录,实现不加./,直接输入命令功能
用which cat查看cat在那个目录


2.最基本的vim命令的实现
#include<stdio.h>
#include<string.h>
int main(int argc,char*argv[])
{
//1.已写的方式打开,w,路径为argv[1]
//2.从键盘读取内容fgets(),放在字符数组
//3.字符数组内容,一个一个字符往文件写
//4.关闭文件 FILE*fp=fopen(argv[],"w");
char buf[];
while()
{
//默认遇到换行符,此处结束读取,换行符都放在buf
//fgets()按行读取
fgets(buf,sizeof(buf),stdin);
//如果用户输入的内容为:wq,结束,保存文件,strncmp函数用于比较特定长度的字符串,当string1大于string2时,返回1;等于时,返回0;小于时,返回-1。
if(strncmp(buf,":wq",)==)
{
break;
}
int i=;
while(buf[i]!='\0')
{
fputc(buf[i],fp);
i++;
}
} fclose(fp);
fp=NULL; return ; }

Linux C/C++基础 文件(中)的更多相关文章
- 查看Linux下*.a库文件中文件、函数、变量
查看Linux下*.a库文件中文件.函数.变量等情况在Linux 下经常需要链接一些 *.a的库文件,那怎么查看这些*.a 中包 含哪些文件.函数.变量: 1. 查看文件:ar -t xxx.a 2. ...
- Linux显示检查设置文件中的语法是否正确
Linux显示检查设置文件中的语法是否正确 youhaidong@youhaidong-ThinkPad-Edge-E545:~$ apachectl [conflgtest] 程序"apa ...
- linux 批量替换所有文件中包含的字符串
sed -i "s/原来字符串/新字符串/g" `grep 原来字符串 -rl .` 格式: sed -i "s/查找字段/替换字段/g" `grep 查找字段 ...
- linux下向一个文件中的某行插入数据的做法
sed -i 'ni\x' test.file 表示向test.file文件里的第n行的前面添加x内容sed -i 'na\x' test.file 表示向test.file ...
- linux命令-查找所有文件中包含某个字符串
查找目录下的所有文件中是否含有某个字符串 find .|xargs grep -ri "IBM" 查找目录下的所有文件中是否含有某个字符串,并且只打印出文件名 find .|xar ...
- linux sed 批量替换文件中的字符串或符号
sed -i :直接修改读取的文件内容,而不是输出到终端. sed -i 就是直接对文本文件进行操作的 替换每行第一次出现的字符串 sed -i 's/查找的字符串/替换的字符串/' 文件 ...
- Linux Shell 之 对文件中的行、单词、字符进行迭代
在进行文本文件进行处理时,对文件件中的行.单词.字符进行迭代和遍历是非常常用的操作.而将一个简单的循环用于迭代,再加上来自stdin或文件的重定向,这就是对文件中的行.单词.和字符进行迭代的基本方法. ...
- Linux C/C++基础 文件(下)
1.fgets和fputs #include <stdio.h> int fputs(const char * str, FILE * stream); 功能:将str所指定的字符串写入到 ...
- Linux C/C++基础——文件(上)
1.文件指针 FILE* fp=NULL; fp指针,只调用了fopen(),在堆区分配空间,把地址返回给fp fp指针不是指向文件,fp指针和文件关联,fp内部成员保存在文件的状态 操作fp指针,不 ...
随机推荐
- WPF界面开发:DevExpress WPF在GridControl中固定行时处理时刻
DevExpress广泛应用于ECM企业内容管理. 成本管控.进程监督.生产调度,在企业/政务信息化管理中占据一席重要之地.通过DevExpress WPF Controls,您能创建有着强大互动功能 ...
- 移动端H5不常见兼容收集
1.微信分身input不支持上传,无法监听到上传事件 解决方案:判断在微信浏览器端使用微信JSSDK上传
- h5 rem计算
设置html默认font-size: 100px,此时默认的页面的width是750px,然后根据手机大小改变html节点的font-size,从而改变rem的大小,代码如下: <script& ...
- hdu 6039 Gear Up
题 OvO http://acm.hdu.edu.cn/showproblem.php?pid=6039 (2017 Multi-University Training Contest 1 1007) ...
- composer (一)
composer参考文档: composer中文网 安装composer: Windows安装:使用安装程序:https://docs.phpcomposer.com/00-intro.html#U ...
- C# 多线程任务分配辅助类
1)首先实现一个多线程的辅助类,代码如下: public class ThreadMulti { public delegate void DelegateComplete(); public del ...
- redis 关闭持久化 实验验证
前言 由于redis持久化(RDB),导致我们的线上的磁盘被写炸 线上服务器是 64H 512G 大概写了rdb文件是 200G左右,写满了当时的目录 处理策略 关闭持久化,由于之前的现象表示,我们线 ...
- sql把一段时间分割成周,月,季度,年的时间段
--本周 select TO_CHAR(CREATE_DATE ,'yyyy-MM-dd')as NEW_DATE , TO_CHAR(trunc(CREATE_DATE, ,'yyyy-MM-dd' ...
- python中的定时器threading.Timer
由浅入深学SQL Server 2012 --> python开发中用到,定时操作.例如每隔1s执行一次,发现 threading.Timer,这个东西,可以直接用. 其原理为执行函数中置定时 ...
- readerwriterqueue 一个用 C++ 实现的快速无锁队列
https://www.oschina.net/translate/a-fast-lock-free-queue-for-cpp?cmp&p=2 A single-producer, sing ...