我在学习《Linux程序设计》- 底层文件访问 时遇到了这段代码,它是一个文件复制程序:
#include <unistd.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdlib.h>
int main()
{
char c;
int in, out;
in = open("file.in", O_RDONLY);
out = open("file.out", O_WRONLY|O_CREAT, S_IRUSR|S_IWUSR);
while(read(in,&c,1) == 1)
write(out,&c,1);
exit(0);
}
Q:这两行没看懂,特别是&c和3个数字1?
while(read(in,&c,1) == 1)
write(out,&c,1);
提前感谢回答问题的朋友们!
read()函数的第二个参数表示要将读取的的数据存放到哪里,第三个参数表示想要一次读取的数据大小,返回值表示实际读取的数据大小
所以
read()第二个参数是&c、第三个参数是1 表示读取一个字节,将其保存到变量c中,然后判断read()返回值是否是1,如果不是的话表示文件读取完毕,则会退出while循环
write()类似,第二个参数和第三个参数联合起来表示将变量c中的那一个字节保存到文件中。