《朱老师物联网大讲堂》学习笔记
学习地址:www.zhulaoshi.org
下面是朱老师上课时候讲解的代码,
其实呢,这个代码是很简单的,甚至让人觉得没什么好讲的,
但是本着0基础,
还有讲解这个代码的同时,也是在教你如何去养成一个写程序的良好习惯,比如如何使用man手册,以及其间的一些细节,
#include<stdio.h>
int main( int argc, char *argv[] )
{
int fd; // fd is file descriptor
int ret = -1 ;
char buf[100] = { 0 };
char writebuf[20] = "i love linux";
fd = open("a.txt", O_RDWR );
if( -1 == fd )
{
printf("file open error\n");
}
else
{
printf("file open success, fd = %d\n", fd );
}
ret = write( fd, writebuf, strlen( writebuf ));
if( red < 0 )
{
printf(" write fail\n");
}
else
{
printf("write %d \n", ret );
}
ret = read( fd, buf, 20 );
if( red < 0 )
{
printf(" read fail\n" );
}
else
{
printf("in fact read is %d byte", ret);
printf(" read is [%s]\n", buf );
}
close( fd );
}
man 1 xxx 查linux shell命令,
man 2 xxx 查linux api,
man 3 xxx 查库函数,
弄不清楚是哪个,就不要加数字!
注意此处read函数中的buf类型是void,
注意此处,write的内容,read并没有得到,
ps:这个代码,头文件,缺少,
然后这个程序运行后,和你想的结果不一样,
这是第一次运行后的结果,
你应该会好奇,为什么,读出是 0 byte,
答案是,你在这次文件操作中,只打开了一次文件,对应的就是一个文件指针,前面write使得指针已经被移动到后面了,所以后面read,就是“没有内容”。