关于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里写入的数据不见了,为什么呢? 展开
 我来答
若以下回答无法解决问题,邀请你更新回答
qzhao_1
2018-04-21 · TA获得超过2.4万个赞
知道大有可为答主
回答量:2.4万
采纳率:76%
帮助的人:4341万
展开全部
我大致看了一下你的程序,虽然我好久没有编写程序了,但是你的程序功能是关于网络套接字 socket 编程的。我个人认为你的 fread( ) 和 write( ) 有问题。因为 fread( ) 和 fwrite( ) 是关于二进制文件的高级读写库函数的配套使用的(打开二进制文件时使用的是 fopen( ) 函数),而 read( )、write( ) 是关于二进制文件的低级读写库函数的配套使用的(打开二进制文件时使用的是 open( ) 函数),二者不可以混用。
另外,你前面说的在 42 行调用 fread()函数向缓冲区 buf 写入了数据也是错误的,应该是从文件指针 fp 中读出数据。所以我建议你从我给你提供的思路,你再检查一下你的程序细节上是否有问题。例如:你到底是想从文件中读数据,还是想向文件中写入数据,如何判断读写数据是否成功,等等。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式