linux下将终端的输入存入文件中
代码很简单:
#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下将终端的输入存入文件中的更多相关文章
- linux下find查找与批量替换文件中指定内容
经常在部署tomcat时需要替换配置文件中的ip,find命令批量替换还是很方便的 查找需要替换的ip,看看哪些文件有配置这个ip,执行下面命令: find ./ -type f -regex &qu ...
- linux下如何批量替换多个文件中的某个字符串?
答: sed -i "s/<old_string>/<new_string>/g" `grep "<old_string>" ...
- 调皮捣蛋的Linux下有趣终端的合集
*本文作者:国光,转载自 FreeBuf.COM,原文地址:https://www.freebuf.com/news/144050.html 前言 刚开始接触Linux的我们,肯定认为Linux系统就 ...
- 完美解决 Linux 下 Sublime Text 中文输入
首先,我参考了好几篇文章,都是蛮不错的,先列出来: sublime-text-imfix:首先推荐这个方法,最简单,但是在我的系统上有些问题.可用这个的强烈推荐用这个 完美解决 Linux 下 Sub ...
- 【java】 linux下利用nohup后台运行jar文件包程序
Linux 运行jar包命令如下: 方式一: java -jar XXX.jar 特点:当前ssh窗口被锁定,可按CTRL + C打断程序运行,或直接关闭窗口,程序退出 那如何让窗口不锁定? 方式二 ...
- linux下c通过虚拟地址映射读写文件的代码
在代码过程中中,把开发过程中比较好的一些代码片段记录起来,如下的代码内容是关于 linux下c通过虚拟地址映射读写文件的代码,应该对小伙伴有些好处.#include<stdio.h>#in ...
- Linux下查找包含BOM头的文件和清除BOM头命令 2014-08-16 12:30:50
Linux下查找包含BOM头的文件和清除BOM头命令 2014-08-16 12:30:50 分类: 系统运维 查找包含BOM头的文件,命令如下: 点击(此处)折叠或打开 grep -r -I -l ...
- linux下通过acl配置灵活目录文件权限(可用于ftp,web服务器的用户权限控制)
linux下通过acl配置灵活目录文件权限(可用于ftp,web服务器的用户权限控制) 发表于2012//07由feng linux 本身的ugo rwx的权限,对于精确的权限控制很是力不从心的,ac ...
- linux下使用split 来分割大文件
linux下使用split 来分割大文件 2010-07-27 15:46:27| 分类: 技术文稿 | 标签:split 分割 linux |字号 订阅 平常都是使用ssh来进行远程 ...
随机推荐
- 1+X证书学习日志——css 2D&过渡
css 位移常用属性 transform:translate(x,y): transform:translateX(); transform:translateY(); 旋转属性 2d旋转: tran ...
- chrome浏览页面常用快捷键
1.chrome浏览页面常用快捷键 Ctrl+N 打开新窗口. Ctrl+T 打开新标签页. Ctrl+W关闭当前标签 Ctrl + F4 关闭chrome浏览器 Ctrl+Tab 或 Ctrl+Pg ...
- PYTHON 文件读写、坐标寻址、查找替换
读文件 打开文件(文件需要存在) #打开文件 f = open("data.txt","r") #设置文件对象 print(f)#文件句柄 f.close() ...
- SpringBoot上传文件报错,临时路径不存在
异常信息 报错日志: The temporary upload location [/tmp/tomcat.7957874575370093230.8088/work/Tomcat/localhost ...
- mysql DML select查询
windows上的操作 1.从官网下载mysql 下载navicat,用来连接mysql的 2.打开运行启动mysql 3.在navicat上的连接打开新建连接 然后输入链接名,连接名就是用户名,自己 ...
- Linux添加硬盘创建新的逻辑卷方式
有同仁看了上文<Linux添加硬盘扩充已有分区存储空间方式>一文后,提出疑问,现在很多云服务器本来没有逻辑卷,添加数据盘后需要自行添加,如何处理? 此文将以某云服务器为例,详细进行解说. ...
- 关于Spring IOC (DI-依赖注入)你需要知道的一切
<Spring入门经典>这本书无论对于初学者或者有经验的工程师还是很值一看的,最近花了点时间回顾了Spring的内容,在此顺带记录一下,本篇主要与spring IOC相关 ,这篇博文适合初 ...
- java验证邮件正则
这里,本人从commons-validator包中源码,拷出部分内容,如下: private static final String EMAIL_REGEX = "^\\s*?(.+)@(. ...
- linux中apt-get使用
apt-get简介 在Ubuntu系统中,经常要用到apt-get install指令来安装软件,由于常常需要root权限来操作,所以搭配sudo食用口感更佳,apt-get指令对于安装.卸载.升级软 ...
- System.Runtime.Caching中MemoryCache帮助类
值得参考的几个内存缓存帮助类: 参考资料: https://github.com/Hendy/memory-cache-helper https://gist.github.com/jdalley/0 ...