linuxC函数write()写入的数据是如何存储的?read()又是如何读取的?
使用二进制存储
write(fd, &student, sizeof(student));
read(fd, &student, sizeof(student));
如果要读取里面第3个student的内容:
lseek(fd, 2 * sizeof(student), SEEK_SET); //即从开始搜索2个student那么长。
这样的前提是student中没有指针,因为每次运行指针的内容是不确定的。
linux命令SHELL编程:数若大于0则输出该数;若小于或等于0则输出0值的程序怎么写?
#!/bin/bashecho “Please input a number:”#键盘读取赋值给变量numread num#判断num的值是否为数字,条件否则直接退出expr $num + 0
1>/dev/null
2>&1if thenecho “${num} is not a number!”exit 0fi#判断变量num的值是否大于0if thenecho $numelseecho 0fi
linux read命令作用?
1、linux系统中read命令用于从标准输入中读取数据,进而给变量赋值。
2、直接使用read,不加变量名称,变量赋值给REPLY。
3、通过-p参数加入提示。
4、通过-t参数限制输入变量值的时间。
5、通过-s 选项隐藏输入的变量值,比如在屏幕输入密码。
6、通过-n参数实现限定输入变量的长度。
7、使用-r参数限制为原始字符串
8、从文件中读取变量值
linux中read如何从文件读取数据?
可以使用如下代码来实现:
注意:以下实例省略了错误处理。
#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
typedef struct
{
char name;
int age;
} Person;
int main(int argc, char **argv)
{
// open
int fd = open(“name.file”, O_RDWR|O_CREAT, 0666);
// write
Person zhang3;
memset((void*)&zhang3, 0x00, sizeof(Person));
strcpy(zhang3.name, “zhang3”);
zhang3.age = 42;
write(fd, (void*)&zhang3, sizeof(Person));
// lseek
lseek(fd, 0, SEEK_SET);
// read
Person li4;
memset((void*)&li4, 0x00, sizeof(Person));
read(fd, (void*)&li4, sizeof(Person));
printf(“%sn”, li4.name);
printf(“%dn”, li4.age);
// close
close(fd);
return 0;
}