必威体育Betway必威体育官网
当前位置:首页 > IT技术

C语言read和write函数解析

时间:2019-09-29 02:44:30来源:IT技术作者:seo实验室小编阅读:56次「手机版」
 

cread

在研究一份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);
	
}

相关阅读

让google.com不自动跳转到google.com.hk的方法

本文转载自:https://www.jianshu.com/p/c00e35ec4c3e如何不让 google.com 跳转到 google.com.hk ? 前言 自从google的服务器搬离

fwrite() write() 返回值闹出的笑话

火坑了,火坑了。今天自己把自己坑惨了。由于需要软件支持断电后重启恢复当时运行状态。故想到将恢复运行状态的一些数据存放到本地

JAVA常见类(十二)Calendar类

Calendar类 Calendar:它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等日历字段之间的转换提供了一些方法,并为操作日

DECIMAL(16,4) 的含义

DECIMAL(16,4)  总共能存16位数字,末尾4位是小数(小数点不算在长度内)

华为荣耀盒子voice与华为盒子/荣耀盒子有什么相同与区

荣耀新发布的智能语音4K盒子-荣耀盒子voice,与上一代荣耀盒子、华为盒子和秘盒有什么区别呢?该如何根据自己的需求购买盒子呢?一、接

分享到:

栏目导航

推荐阅读

热门阅读