代码很简单:

   #include <stdlib.h>
#include <fcntl.h>
#include <stdio.h>
#include <unistd.h>
#include <string.h> int main(int argc, char **argv)
{
int fd;
fd = open("sam1", O_RDWR|O_CREAT|O_APPEND, S_IRWXU);
printf("please input:");
char *tmpc = (char *)malloc(sizeof(char));
//scanf("%s", tmpc);
scanf("%[^\n]", tmpc);
int size = strlen(tmpc);
printf("you input: %s and size:%d\n", tmpc, size);
write(fd, tmpc, strlen(tmpc));
write(fd, "\n", ); int tmp = close(fd); return ;
}

  这里唯一的一个坑就是:第13行的scanf函数不能接受有空格的字符串,让我郁闷了一上午,终于搞定了。原来,是sanf()函数在接收字符串时,遇到空格就会停止接收。可以使用gets()函数代替,但也可以用以下方式解决:

这里主要介绍一个参数,%[ ],这个参数的意义是读入一个字符集合。[ ]是个集合的标志,因此%[ ]特指读入此集合所限定的那些字符,比如%[A-Z]是输入大写字母,一旦遇到不在此集合的字符便停止。如果集合的第一个字符是“^”,这说明读取不在“^“后面集合的字符,即遇到”^“后面集合的字符便停止。此时读入的字符串是可以含有空格的。(\n 表示换行符)

  因此形成了第14行的代码了。

下面代码将上边存储的文本全部读取出来:

   #include <stdio.h>
#include <stdlib.h>
#include <string.h> #define MAX_LINE 1024 int main(int argc, char **argv)
{
char buf[MAX_LINE];
FILE* fd = fopen("sam1", "r");
while(fgets(buf, MAX_LINE, fd) != NULL){
int len = strlen(buf);
buf[len - ] = '\0';
printf("%s %d \n", buf, len - );
} return ;
}

  同学们,请自行尝试,有问题请留言。

  改造代码如下:

readFile.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h> #define MAX_LINE 1024 int main(int argc, char **argv)
{
if(argc < ){
printf("Error!\n");
}
char buf[MAX_LINE];
FILE* fd = fopen(*(argv + ), "r");
while(fgets(buf, MAX_LINE, fd) != NULL){
int len = strlen(buf);
buf[len - ] = '\0';
//printf("%s %d \n", buf, len - 1);
printf("%s\n", buf);
} return ;
}
writeFile.c
#include <stdlib.h>
#include <fcntl.h>
#include <stdio.h>
#include <unistd.h>
#include <string.h> int main(int argc, char **argv)
{
if(argc < ){
printf("Error!\n");
}
int fd;
fd = open(*(argv + ), O_RDWR|O_CREAT|O_APPEND, S_IRWXU);
printf("please input:");
char *tmpc = (char *)malloc(sizeof(char));
//scanf("%s", tmpc);
int tmpp = gets(tmpc);
int size = strlen(tmpc);
printf("you input: %s and size:%d\n", tmpc, size);
write(fd, tmpc, strlen(tmpc));
write(fd, "\n", ); int tmp = close(fd); return ;
}

  改造后的代码,需要指出需要使用的文件名称而已,更加具有普遍性。

linux下将终端的输入存入文件中的更多相关文章

  1. linux下find查找与批量替换文件中指定内容

    经常在部署tomcat时需要替换配置文件中的ip,find命令批量替换还是很方便的 查找需要替换的ip,看看哪些文件有配置这个ip,执行下面命令: find ./ -type f -regex &qu ...

  2. linux下如何批量替换多个文件中的某个字符串?

    答: sed -i "s/<old_string>/<new_string>/g" `grep "<old_string>" ...

  3. 调皮捣蛋的Linux下有趣终端的合集

    *本文作者:国光,转载自 FreeBuf.COM,原文地址:https://www.freebuf.com/news/144050.html 前言 刚开始接触Linux的我们,肯定认为Linux系统就 ...

  4. 完美解决 Linux 下 Sublime Text 中文输入

    首先,我参考了好几篇文章,都是蛮不错的,先列出来: sublime-text-imfix:首先推荐这个方法,最简单,但是在我的系统上有些问题.可用这个的强烈推荐用这个 完美解决 Linux 下 Sub ...

  5. 【java】 linux下利用nohup后台运行jar文件包程序

    Linux 运行jar包命令如下: 方式一: java -jar XXX.jar 特点:当前ssh窗口被锁定,可按CTRL + C打断程序运行,或直接关闭窗口,程序退出 那如何让窗口不锁定? 方式二 ...

  6. linux下c通过虚拟地址映射读写文件的代码

    在代码过程中中,把开发过程中比较好的一些代码片段记录起来,如下的代码内容是关于 linux下c通过虚拟地址映射读写文件的代码,应该对小伙伴有些好处.#include<stdio.h>#in ...

  7. Linux下查找包含BOM头的文件和清除BOM头命令 2014-08-16 12:30:50

    Linux下查找包含BOM头的文件和清除BOM头命令 2014-08-16 12:30:50 分类: 系统运维 查找包含BOM头的文件,命令如下: 点击(此处)折叠或打开 grep -r -I -l ...

  8. linux下通过acl配置灵活目录文件权限(可用于ftp,web服务器的用户权限控制)

    linux下通过acl配置灵活目录文件权限(可用于ftp,web服务器的用户权限控制) 发表于2012//07由feng linux 本身的ugo rwx的权限,对于精确的权限控制很是力不从心的,ac ...

  9. linux下使用split 来分割大文件

    linux下使用split 来分割大文件 2010-07-27 15:46:27|  分类: 技术文稿 |  标签:split  分割  linux   |字号 订阅   平常都是使用ssh来进行远程 ...

随机推荐

  1. k8s与监控--k8s部署grafana6.0

    原文参考:https://segmentfault.com/a/1190000018335241

  2. flask与Flask-CORS的使用

    flask与Flask-CORS的使用 一.安装 pip install flask-cors 二.使用 # 文件:manage.py from flask_cors import CORS from ...

  3. 2019 猎豹移动java面试笔试题 (含面试题解析)

    本人3年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.猎豹移动等公司offer,岗位是Java后端开发,最终选择去了猎豹移动. 面试了很多家公司,感觉大部分公司考察的点 ...

  4. 1+X证书学习日志——css 2D&过渡

    css 位移常用属性 transform:translate(x,y): transform:translateX(); transform:translateY(); 旋转属性 2d旋转: tran ...

  5. 遍历js对象中的属性

    可以使用js自带的for in.也可以使用Ext JS中的方法来遍历js对象中的属性 代码如下: /** 遍历对象 */ var person = {name:'张泰松',age:28}; //js方 ...

  6. Celery:Daemonization

    参考文档:http://docs.celeryproject.org/en/latest/userguide/daemonizing.html#daemonizing

  7. Oracle恢复流程图

    本图来自于网络,想当初小麦苗刚开始接触备份恢复的时候,就是靠着这张图来学习的,今天把这张图分享给大家,共勉. ............................................. ...

  8. oracle instantclient_12_2安装

    下载地址 http://www.oracle.com/technetwork/database/database-technologies/instant-client/downloads/index ...

  9. angularcli 第七篇(service 服务)

    在组件中定义的信息是固定的,假设另外一个组件也需要用到这些信息,这时候就用到服务,实现 共享数据 和 方法 组件不应该直接获取或保存数据,它们不应该了解是否在展示假数据. 它们应该聚焦于展示数据,而把 ...

  10. 使用kubeadm部署k8s

    k8s组件 master,node master中包括apiserver,scheduler,controller.etcd apiserver:负责接收用户请求,并且保存至etcd中. schedu ...