在研究一份AES加密代码的时候,发现代码从command line获取数据仅仅使用了read函数,很是疑问。从command line获取数据不是要使用scanf函数吗?所以,详细了解了C库的read函数特性。顺带了write函数,他们是couple一对儿!!!
主要参考文章:https://blog.csdn.net/dangzhangjing97/article/details/79619894
感谢原博主

使用read、write函数们需要包含头文件

#include<unistd.h>

read()

用于文件描述符对应的文件中读取数据,原型:

ssize_t read(int fd,void*buf,size_t count)
参数说明:
fd: 是文件描述符, 从command line获取数据时,为0
buf: 为读出数据的缓冲区;
count: 为每次读取的字节数(是请求读取的字节数,读上来的数据保
存在缓冲区buf中,同时文件的当前读写位置向后移)

返回值:

成功:返回读出的字节数
失败:返回-1,并设置errno,如果在调用read
之前到达文件末尾,则这次read返回0

write()

用于将数据写入到文件描述符对应的文件,原型:

ssize_t write(int fd,const void*buf,size_t count);
参数说明:
fd:是文件描述符(输出到command line,就是1)
buf:通常是一个字符串,需要写入的字符串
count:是每次写入的字节数

返回值:

成功:返回写入的字节数
失败:返回-1并设置errno
ps: 写常规文件时,write的返回值通常等于请求写的字节
数count, 而向终端设备或者网络写时则不一定

因此,read函数就可以取代scanf从command line读取数据;write函数就可以代替printf,往command line打印输出。

示例代码

#define MAXLEN  1024
int main(void)
{ int ret;// char key[17];char *p;p = (char*)malloc(MAXLEN*(sizeof(char*)));   //申请一块内存,存放读取数据memset(p,0,MAXLEN);printf("请输入一串字符:\n");ret = read(0,p,MAXLEN);printf("read 函数就可以直接从command line 读取数据吗?试一试read到没!\n");printf("下面为定义内存数据输出。。。\n");for(int i =0; p[i]!='\n';i++){printf("key[%d] = %c\n",i,p[i]);}printf("试一试write函数~~~\n");for(int i =0; p[i] != '\n';i++){ret = write(1,&p[i],1);printf("\n");printf("写入数据个数:ret = %d\n",ret);}free(p);}

C语言read和write函数解析相关推荐

  1. c分布 的程序设计语言,#2020学习打卡##C程序设计语言# C语言中的随机数函数解析...

    在计算机中并没有一个真正的随机数发生器,但是可以做到使产生的数字重复率很低,这样看起来好象是真正的随机数,实现这一功能的程序叫伪随机数发生器. 有关如何产生随机数的理论有许多,如果要详细地讨论,需要厚 ...

  2. C语言 fopen和fread函数解析

    fopen函数 fopen()函数可以用来打开文件,写法如下,第一个参数是文件名路径,第二个参数的是打开文件的方式: FILE *fp1: fp1 = fopen("file a" ...

  3. R语言:expand.grid() 函数解析

    expand.grid() 构造一个数据框,将各参数的各水平完全搭配. 示例: type=c("A", "M")      trend=c("N&qu ...

  4. c++ _int64转字符串_C语言 仿JS的eval函数 解析字符串

    C语言 利用后缀表达式解析字符串(符合c98标准,很容易移植到计算器上) 最近用98标准的C语言写了个解析字符串,类似于JavaScript中的eval函数,感觉挺实用(移植到了计算器上,可以画F(X ...

  5. C语言sprintf函数解析(实现数据类型转换到字符串)

    最近在将int转为char*字符串上出了问题,最后使用sprintf函数解决, 使用实例: char *char_num; int recv_num=-123456:sprintf(char_num, ...

  6. R语言R原生plot函数和lines函数的主要参数说明、解析(type、pch、cex、lty、lwd、col、xlab、ylab)

    R语言R原生plot函数和lines函数的主要参数说明.解析(type.pch.cex.lty.lwd.col.xlab.ylab) 目录

  7. C语言 atoi 函数解析

    文章目录 前言 atoi函数的介绍 atoi函数的使用 atoi函数的自我实现 附:C++完整无缺版自我实现 写在最后 前言 对于atoi函数大家可能会有些陌生,不过当你选择并阅读到这里时,请往下阅读 ...

  8. main() 函数解析(一)——Linux-0.11 剖析笔记(六)

    文章目录 1. 宏定义`_syscall0` 2. `setup.s`读取的参数 3. 读取CMOS实时时钟信息 3.1 `outb_p(value,port)` 3.2 `inb_p(port)` ...

  9. main函数解析(一)——Linux-0.11 学习笔记(五)

    main()函数解析(一)--Linux-0.11 学习笔记(五) 经过了前面的各种铺垫,终于来到了main函数.这篇博客的任务是把init/main.c讲清楚.由于牵扯到很多的函数调用,要想一次就说 ...

  10. 三级C语言上机考试试题与题解,全国计算机等级三级C语言上机试题逐题解析

    三级网络技术和三级数据库技术的C语言上机试题难度较大,题型多样,因此颇难掌握,今将这些试题分类解析,希望能帮大家顺利通过上机考试. 三级的上机题可以分为十几个类型,每类中的题目数量不一,多则十几道题, ...

最新文章

  1. Oracle 聚合函数(Aggregate Functions)说明
  2. 2021年码农应该了解的所有机器学习算法
  3. 在 Windows Server 2008 下安装 Community Clips
  4. Spring 5 新增全新的reactive web框架:webflux
  5. C++ 注册表取值 按行读取txt文件 时间差天数 格林威治时间转标准时间
  6. Android开发七 Android中的显示单位
  7. django-分页自带的分页-自定义分页
  8. php radius类,PHP Radius Search
  9. 兼容M1芯片 Denise Audio poltergate Mac - 侧链均衡器
  10. 基于Verilog的贪吃蛇小游戏设计(附代码)
  11. 台式电脑开机一直卡在正在启动windows怎么办
  12. Win7 FTP搭建
  13. 逻辑斯蒂回归与梯度下降法
  14. php算法----队列
  15. 最后3天!生信入门转录组和可视化学习捷径
  16. 使用css实现扫描效果
  17. MySQL 幻读和不可重复读的区别
  18. Day 02- Vue3 技术_分析工程结构
  19. MySQL教程二 基础查询与排序
  20. 多少往事付东风,go with wind

热门文章

  1. 哈哈哈……~好敷衍的第一篇博客标题~
  2. 思维 POJ - 2361 Tic Tac Toe
  3. 苹果手机怎么验证app_【图文】苹果手机如何下载安装APP
  4. 【存储数据恢复】esx vmfs的互斥导致存储数据丢失的数据恢复案例
  5. 漫画 | 阿姨,我不想努力了~
  6. 银河麒麟设置静态IP
  7. 实现自己的Protobuf Any
  8. 金山WPS c++ 一面面经
  9. psv变革怎么安装游戏_创造变革游戏
  10. 每天一个linux命令(33):atq命令