开发者社区 问答 正文

C语言底层复制小程序,有几个细节不懂?

我在学习《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); 

提前感谢回答问题的朋友们!

展开
收起
a123456678 2016-06-06 13:53:40 2074 分享 版权
1 条回答
写回答
取消 提交回答
  • read()函数的第二个参数表示要将读取的的数据存放到哪里,第三个参数表示想要一次读取的数据大小,返回值表示实际读取的数据大小

    所以
    read()第二个参数是&c、第三个参数是1 表示读取一个字节,将其保存到变量c中,然后判断read()返回值是否是1,如果不是的话表示文件读取完毕,则会退出while循环
    write()类似,第二个参数和第三个参数联合起来表示将变量c中的那一个字节保存到文件中。

    2019-07-17 19:28:26
    赞同 展开评论
问答分类:
问答地址: