关于C语言中read(),write()函数的问题
这是一本网络编程书中的示例代码,从图片中可以看到,在42行调用fread()函数想缓冲区buf写入了数据,然后在45行或者48行将buf中的数据写到套接字clnt_sd中...
这是一本网络编程书中的示例代码,从图片中可以看到,在42行调用fread()函数想缓冲区buf写入了数据,然后在45行或者48行将buf中的数据写到套接字clnt_sd中,最后在52行中调用read函数向buf写数据时,此时buf是空的,之前在42行向buf里写入的数据不见了,为什么呢?
展开
若以下回答无法解决问题,邀请你更新回答
1个回答
展开全部
我大致看了一下你的程序,虽然我好久没有编写程序了,但是你的程序功能是关于网络套接字 socket 编程的。我个人认为你的 fread( ) 和 write( ) 有问题。因为 fread( ) 和 fwrite( ) 是关于二进制文件的高级读写库函数的配套使用的(打开二进制文件时使用的是 fopen( ) 函数),而 read( )、write( ) 是关于二进制文件的低级读写库函数的配套使用的(打开二进制文件时使用的是 open( ) 函数),二者不可以混用。
另外,你前面说的在 42 行调用 fread()函数向缓冲区 buf 写入了数据也是错误的,应该是从文件指针 fp 中读出数据。所以我建议你从我给你提供的思路,你再检查一下你的程序细节上是否有问题。例如:你到底是想从文件中读数据,还是想向文件中写入数据,如何判断读写数据是否成功,等等。
另外,你前面说的在 42 行调用 fread()函数向缓冲区 buf 写入了数据也是错误的,应该是从文件指针 fp 中读出数据。所以我建议你从我给你提供的思路,你再检查一下你的程序细节上是否有问题。例如:你到底是想从文件中读数据,还是想向文件中写入数据,如何判断读写数据是否成功,等等。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询