文件写入操作编程(Linux系统编程)

2023-10-27

  • write函数
    man手册的相关介绍
    在这里插入图片描述
  • 代码实现
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <string.h>
#include <stdlib.h>

int main()
{
	int fd;
	int n_write;
	char readBuf[20];
	//int open(const char *pathname, int flags);  
	fd=open("./file1",O_RDWR);//可读可写
	if(fd == -1){
		printf("创建失败\n");
		//int open(const char *pathname, int flags, mode_t mode);
		fd=open("./file1",O_RDWR|O_CREAT,0600);//如果没有file1则创建,0600:权限是可读可写
		if(fd > 0){
			printf("创建成功,fd=%d\n",fd);
		}
	}
	printf("打开成功,fd=%d\n",fd);
	printf("请输入你需要写入file1的字符串\n");
	fgets(readBuf,20,stdin);//stdin是键盘的输入
	//ssize_t write(int fd, const void *buf, size_t count);
	n_write=write(fd,readBuf,strlen(readBuf));//把readBuf里面的内容写道fd里面
	close(fd);//关闭文件养成好习惯	
	return 0;
}

  • 运行结果
    在这里插入图片描述
    在这里插入图片描述
  • 期间遇到的问题(小插曲)
printf("请输入你需要写入file1的字符串\n");
fgets(readBuf,20,stdin);//stdin是键盘的输入

一开始我用的是

scanf("readBuf",readBuf);

发现输入字符串一有空格,输出就会卡在这地方后面的就输入的就不显示了。(scanf函数就是冲缓存里面取bai字符串,遇到du空格或换行符结束)。
后来我换成了

gets(readBuf);

结果Linux下出现警告:

/tmp/cciTjNvl.o:在函数‘main’中:
demo3.c:(.text+0xaa): 警告: the `gets' function is dangerous and should not be used.

经过查阅发现要用

// char *fgets(char *s, int size, FILE *stream);
fgets(readBuf,20,stdin);//stdin是键盘的输入

学到了一手

  • 坚持冲冲冲!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

文件写入操作编程(Linux系统编程) 的相关文章

  • 【hello Linux】线程概念

    目录 1 线程概念的铺设 2 Linux线程概念 2 1 什么是线程 2 2 线程的优点 2 3 线程的缺点 2 4 线程异常 2 5 线程用途 3 Linux进程VS线程 4 Linux线程控制 4 1 POSIX线程库 4 2 创建线程
  • linux文件编程(4)—— 用ANSIC标准C库函数进行文件编程:fopen、fread、fwrite、fseek

    参考 linux文件编程 5 用ANSIC标准中的C库函数进行文件编程 作者 丶PURSUING 发布时间 2021 04 11 11 58 25 网址 https blog csdn net weixin 44742824 article
  • 01LinuxC线程学习之线程概念,简述与进程区别和查看LWP轻量级线程号(不是PID也不是TID))

    1 线程 1 1 线程概念 1 线程概念 每个线程有各自的PCB 但没有独立的地址空间 共享 注 该地址空间指的是以进程为单位 不是指栈 而进程拥有独立地址空间 拥有PCB 2 LWP light weight process 轻量级的进程
  • xxxx is deprecated

    编译工程发现json object object get is deprecated 最终解决 jason c库中有声明 deprecated Please use json object object get ex json c库编译的时
  • Linux·C++多线程基础知识

    目录 1 多线程 1 1 多进程与多线程 1 2 多线程理解 1 3 创建线程 1 4 join与detach方式 1 join举例 2 detach举例 1 5 this thread 2 mutex 2 1 lock与unlock 2
  • Linux·C/C++主线程对子线程的影响

    这篇文章主要介绍了简单了解C语言中主线程退出对子线程的影响 文中通过示例代码介绍的非常详细 对大家的学习或者工作具有一定的参考学习价值 需要的朋友可以参考下 对于程序来说 如果主进程在子进程还未结束时就已经退出 那么Linux内核会将子进程
  • linux下使用glob()实现打开任意目录下的所有文件

    linux下使用glob 实现打开任意目录下的所有文件 使用递归 参考了linux glob函数详解的实例4 编程思路 第一次调用glob获取当前目录下所有非隐藏文件 若此次目录文件下没有非隐藏文件 但却可能只有隐藏文件 接着第二次调用gl
  • 10LinuxC线程学习之pthread_detach函数,错误返回值分析及其案例

    1 pthread detach函数 int pthread detach pthread t thread 功能 1 实现线程分离 不再受主线程管理 由系统接任 线程结束后 其退出状态不由其他线程获取 而直接自己自动释放 网络 多线程服务
  • FTP云盘

    参考 FTP云盘项目 作者 糯米啊啊 发布时间 2021 08 19 10 34 05 网址 https blog csdn net weixin 43732386 spm 1001 2014 3001 5509 参考 自制FTP云盘项目
  • 16LinuxC进程间通信之mmap创建匿名映射区

    1 mmap创建匿名映射区 1 创建匿名映射区非常简单 只需要加上MAP ANONYMOUS即可 参数len长度可以随便大小 fd没有传 1即可 open这些函数可以不需要了 并且匿名映射实际上就是解决中间创建的文件问题 2 并且 匿名映射
  • fgetc、fgets用法 && 实现cp操作

    fgetc函数原型 int fgetc FILE stream 为什么fgetc返回的是int而不是char 通过man fgetc查看其返回值 fgetc getc and getchar return the character rea
  • 基于TCP的Socket网络编程

    前言 Socket通信是基于TCP IP协议的通信 在工作和做项目中应用非常广 下面来介绍下Socket网络编程 Socket的介绍 首先 在Socket网络编程中我们要了解两个重要的东西 ip和端口号 一台拥有IP地址的主机可以提供许多服
  • 【hello Linux】进程信号

    目录 1 进程信号的引出及整体概况 2 信号的产生 1 键盘产生 2 进程异常 3 系统调用 4 软件条件 3 信号的保存 1 信号相关的常见概念 2 sigset t 3 信号集操作函数 4 sigprocmask 对block位图的操作
  • Linux·DNS协议、ICMP协议、NAT技术

    目录 DNS协议 DNS背景 编辑域名简介 域名解析过程 使用dig工具分析DNS过程 ICMP协议 ICMP功能 ICMP协议格式 编辑ping命令 一个值得注意的坑 traceroute命令 NAT技术 NAT技术背景 NAT IP转换
  • linux文件编程(1)—— open、write、read、lseek、阻塞问题(ps文件操作/文件描述符/重定向原理/缓冲区/标准错误)

    参考 linux文件编程 1 常用API之open write read lseek 作者 丶PURSUING 发布时间 2021 04 08 22 19 28 网址 https blog csdn net weixin 44742824
  • Linux中的软件管家——yum

    目录 编辑 一 软件安装的方式 二 对yum的介绍 1 yum的作用 2 yum的库 三 yum下载软件的操作 1 yum list 2 yum install 3 yum remove 四 yum源的转换 一 软件安装的方式 软件安装的方
  • 共享存储映射

    存储映射I O 存储映射I O memory mapped I O 使一个磁盘文件与存储空间中的一个缓冲区相映射 于是当从缓冲区中获取数据 就相当于读文件中的相应字节 与此类似 将数据存入缓冲区 则相应的字节就自动写入文件 这样 就可在不适
  • GDB调试的基本使用、GDB调试多进程

    1 编译时加选项 g 生成具有调试信息的程序 gcc g test c o test 2 启动GDB 1 启动GDB gdb test 2 设置运行时参数 主函数中可接收运行时参数 set args 设置运行时参数 如set args 10
  • 【Linux学习笔记】7. Linux文件IO详解(附代码实例)

    Linux文件I O 前置知识 Linux文件I O分为系统IO和标准IO 常用于系统编程 系统I O通过文件描述符 fd 来操作文件 标准I O通过文件流 FILE 来操作文件 Linux下可以使用man命令来查看使用手册 学习和使用这些
  • 【Linux】进程优先级,环境变量,进程地址空间

    文章目录 1 进程优先级 基本概念 查看系统进程 PRI and NI PRI vs NI 修改进程优先级的命令 其他概念 2 环境变量 基本概念 查看环境变量方法 常见环境变量 测试PATH 环境变量相关的命令 环境变量的组织方式 通过代

随机推荐

  • go协程、管道

    请感受一下协程的强大 使用了管道序列 package main import fmt time 创建一个管道 用于写入数据 func writeChantest writeChan chan int for i 0 i lt 20 i wr
  • ISO 26262:保障驾驶安全的汽车功能安全标准

    来源 中豪认证 随着汽车科技的迅猛发展 越来越多的电子系统和功能被引入汽车中 为驾驶体验和安全性带来了巨大的改进 然而 这些复杂的电子系统也带来了潜在的风险和安全挑战 为了确保现代汽车在各种情况下的安全性 国际标准化组织于2011年发布了I
  • 实现浏览页面时校验用户是否已经完成登录的功能

    一 实现原理 实现步骤 1 创建自定义过滤器LoginWebFilter java 2 在启动类上加入注解 ServletComponentScan 用来扫描web相关的注解 3 完善过滤器的处理逻辑 二 代码实现 首先在main java
  • 关于Xilinx下载器驱动安装及常见问题解决方法

    PC操作系统平台 Win7x64 ISE14 4 ISE14 7 下载器工作状态指示灯说明 如果Xilinx的下载器与电脑连接之后 下载器上面的指示灯不亮 说明PC上安装的下载器驱动有问题或者是下载器坏掉了 如果下载器与电脑连接之后 并与开
  • CTFshow 每日一练

    一 web签到题 打开链接 查看源码 利用base64解码得到flag 二 web2 看到有提示 SQL注入 先试着使用万能密码登陆 发现有回显 直接sql注入 or 1 1 order by 3 发现到4时不回显 开始爆库名 看看哪个位置
  • 2、ubuntu18.04安装cmake

    本文以安装cmake3 18 0为例 1 获取安装包 wget https cmake org files v3 18 cmake 3 18 0 Linux x86 64 tar gz 2 解压压缩包 tar zxvf cmake 3 18
  • GD32F3x0 USB CDC应用案例

    GD32F3x0 USB CDC应用 本文有点长 描述了从0开始移植驱动到应用的过程和思路 准备工作 因项目需求这两天需要做个USB的虚拟COM口发卡器 实现双向通讯 由于功能较为简单我们选择GD32F350来开发 先跑跑官方例程 GD32
  • 分享程序员在囧途网站

    不知不觉的在博客园看到了失业的程序员系列文章 我就带着好奇的看了几章 然后发现类似创业的文章的经历的文章 都是程序员爱看到的文章 同时把这样的经历加上一点修饰 是很多程序员喜欢的话题 也是程序员想看到的文章 不知道不觉到了第六章的时候 文章
  • LayUI数据表格 通用工具栏 分页+搜索+排序

    完成效果 1 接收和展示后端接口传来的数据 2 分页和跳页 设置每页的数量 3 工具栏 查看 修改 删除 4 工具栏 筛选列 导出Excel 打印 5 搜索功能 6 后端排序功能 本实例只展示了实现功能的必须代码 后端代码的非必须部分未贴出
  • 第十三届蓝桥杯 ——刷题统计

    题目描述 小明决定从下周一开始努力刷题准备蓝桥杯竞赛 他计划周一至周五每天做 a a a 道题目 周六和周日每天做 b b b 道题目 请你帮小明计算 按照计划他将在第几天实现做题数大于等于
  • 【C++】 STL库list容器

    STL库list容器 1 list中的构造函数 2 begin 和end list 容器的iterator 3 增 3 1 push back 末端插入 3 2 push front 头部插入 3 3 insert 在指定位置插入n个元素
  • android:checkBox的监听

    CheckBox cb project CheckBox findViewById R id cb project cb project setText 测试是否被选中 cb project setOnCheckedChangeListen
  • [源码和文档分享]基于Keras和tensorflow深度学习Python实现的支持人脸识别和情绪分类的社区APP网站和微信小程序...

    1 项目介绍 1 1 背景 视觉使人类得以感知和理解周边的世界 人的大脑皮层大约有 70 的活动在处理 视觉相关信息 计算机视觉即通过电子化的方式来感知和理解影像 以达到甚至超 越人类视觉智能的效果 从 1966 年学科建立 MIT The
  • Xtrabackup实现数据的备份与恢复

    目录 Xtrabackup实现数据的备份与恢复 Xtrabackup介绍 Xtrabackup优点 Xtrabackup备份原理 Xtrabackup增量备份介绍 Xtrabackup安装 创建测试数据 Xtrabackup全量备份与恢复
  • 14.【Linux】如何在ubuntu18.04下安装Firefox中国版解决Ubuntu与Windows下Firefox账号同步问题(已解决)

    一 下载最新版本火狐Linux版 下载地址 http firefox com cn download 选择火狐Linux64 bit版 下载后文件为 Firefox latest x86 64 tar bz2 二 首先卸载自带的国际版火狐浏
  • 华为-判断两个IP是否属于同一子网

    java实现 问题 题目描述 子网掩码是用来判断任意两台计算机的IP地址是否属于同一子网络的根据 子网掩码与IP地址结构相同 是32位二进制数 其中网络号部分全为 1 和主机号部分全为 0 利用子网掩码可以判断两台主机是否中同一子网中 若两
  • VMware虚拟机怎么用U盘装win7系统

    VMware Workstation虚拟机可以在一台电脑上模拟运行多种不同的操作系统 实现与实际电脑完全一样的操作 包括读取U盘 连接网络等 很多用户想用U盘启动盘给VMware安装win7系统 但是不知道怎么操作 本文系统城小编就教大家在
  • Unity 手机触屏事件

    Unity 触屏操作 当将Unity游戏运行到IOS或Android设备上时 桌面系统的鼠标左键可以自动变为手机屏幕上的触屏操作 但如多点触屏等操作却是无法利用鼠标操作进行的 Unity的Input类中不仅包含桌面系统的各种输入功能 也包含
  • Java实现冒泡排序

    冒泡排序 基础版本 冒泡 两轮循环 外层表示第几轮冒泡 内层表示两两比较 public static void bubble int a 冒泡轮次 for int j 0 j lt a length 1 j 两两比较 for int i 0
  • 文件写入操作编程(Linux系统编程)

    write函数 man手册的相关介绍 代码实现 include