read和printf

一 read:

(一)用途:将信息读入一个或多个shell变量。


(二)执行过程:

(1)自标准输入读取行(数据)后,通过Shell字段切割的功能(使用$IFS)进行划分。第一个单词赋值给第一个变量,第二个单词赋值第二个变量,依次类推。如果单词多于变量,则剩下的单词,全赋值给第二个变量。read一旦遇到文件结尾,会以失败值退出。


(2)使用举例:

*$ IFS=: read name age //输入 lyr no1 : 20+3,则name=lyr no1,age=20+3.

*$while IFS=: read user pass uid gid fullname homedir shell

do

...处理每个用户的行

done<</etc/passwd

*cat /etc/passwd | while IFS=:read user pass uid gid fullname homedir shell

do

....

done


二 printf:format and print data.

(一)格式:

(1)语法:printf format [argument]

(2)format:描述格式规格的字符串,最佳提供方式是放在引号内的字符串常数。

(3)arguments:参数列表,例如字符串或变量值的列表,该列表需与格式规格相对应。

(4)例如:

*printf "NAME:%s,AGE:%s\n" "lyr" "25"

*printf "NAME:%s,AGE:%s\n" $name $age


(二)格式控制符:

(1)格式控制符符:

*%c:ASCII字符。显示对应参数的第一个字符。

*%d:十进制整数。

*%e:浮点格式。

*%s:字符串。

...还有很多。



以下是对`memset`和`read`的介绍和演示: 1. `memset`函数 `memset`函数是C/C++语言中的一个函数,用于对一段内存空间进行初始化。其函数原型为: ```c void *memset(void *s, int c, size_t n); ``` 其中,`s`为指向待初始化内存空间的指针,`c`为初始化的值,`n`为初始化的字节数。该函数将`s`指向的内存空间的前`n`个字节全部初始化为`c`。 需要注意的是,由于`memset`函数按字节对内存块进行初始化,因此不能用它将int数组初始化为0和-1之外的其他值(除非该值高字节和低字节相同)。 以下是一个使用`memset`函数将数组初始化为0的例子: ```c #include <stdio.h> #include <string.h> int main() { int arr[10]; memset(arr, 0, sizeof(arr)); // 将arr数组的所有元素初始化为0 for (int i = 0; i < 10; i++) { printf("%d ", arr[i]); // 输出:0 0 0 0 0 0 0 0 0 0 } return 0; } ``` 2. `read`函数 `read`函数是Linux系统中的一个系统调用函数,用于从文件描述符中读取数据。其函数原型为: ```c ssize_t read(int fd, void *buf, size_t count); ``` 其中,`fd`为文件描述符,`buf`为读取数据的缓冲区,`count`为要读取的字节数。该函数将从文件描述符`fd`中读取最多`count`个字节的数据,并将其存储到`buf`指向的缓冲区中。 以下是一个使用`read`函数从文件中读取数据的例子: ```c #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <fcntl.h> int main() { int fd = open("test.txt", O_RDONLY); // 打开文件test.txt if (fd == -1) { perror("open"); exit(1); } char buf[1024]; ssize_t n = read(fd, buf, sizeof(buf)); // 从文件中读取数据 if (n == -1) { perror("read"); exit(1); } printf("%s", buf); // 输出读取到的数据 close(fd); // 关闭文件 return 0; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值