当前位置: 技术问答>linux和unix
求助Linux文件串口读写问题
来源: 互联网 发布时间:2017-05-03
本文导语: 我调试这个程序总是出现段错误,分析应该是没有读到文件的末尾i循环>500000,read没有读全文件。可是程序错在哪里呢?各位大侠帮帮忙啊!! 附上部分程序: if((fdshow=open("show.jpg",O_WRONLY|O_CREAT|O_TRUNC))==FALSE) { print...
我调试这个程序总是出现段错误,分析应该是没有读到文件的末尾i循环>500000,read没有读全文件。可是程序错在哪里呢?各位大侠帮帮忙啊!!
附上部分程序:
if((fdshow=open("show.jpg",O_WRONLY|O_CREAT|O_TRUNC))==FALSE)
{
printf("open this file errorn");
exit(0);
}
nread=read(fd,head,2);
if((head[1]==-40)&&(head[0]==-1))//文件的开头标志
{
nwrite=write(fdshow,head,2);
nread=read(fd,buff1,500000);
i=0;
while((buff1[i]!=-1)||(buff1[i+1]!=-39))//文件的末尾标志
i=i+2;
nwrite=write(fdshow,buff1,i);
附上部分程序:
if((fdshow=open("show.jpg",O_WRONLY|O_CREAT|O_TRUNC))==FALSE)
{
printf("open this file errorn");
exit(0);
}
nread=read(fd,head,2);
if((head[1]==-40)&&(head[0]==-1))//文件的开头标志
{
nwrite=write(fdshow,head,2);
nread=read(fd,buff1,500000);
i=0;
while((buff1[i]!=-1)||(buff1[i+1]!=-39))//文件的末尾标志
i=i+2;
nwrite=write(fdshow,buff1,i);
|
如果文件大小大于500000,
这段代码就会有问题:
nread=read(fd,buff1,500000);
nread返回500000,但文件没读完,
因为你没有判断 i
这段代码就会有问题:
nread=read(fd,buff1,500000);
nread返回500000,但文件没读完,
while((buff1[i]!=-1)||(buff1[i+1]!=-39))//文件的末尾标志
i=i+2;
因为你没有判断 i