c语言fwrite和fread

#include<stdio.h>intmain(){FILE*p1=fopen("a.txt","wb+");inta,b;a=5;fwrite(&a,sizeof(a... #include<stdio.h>
int main()
{
FILE *p1=fopen("a.txt","wb+");
int a,b;
a=5;
fwrite(&a,sizeof(a),1,p1);
fread(&b,sizeof(b),1,p1);
printf("%d\n",b);
fclose(p1);
}

为什么运行后输出是负值
而且没有文本输出a.txt还是空文本

顺便说一下这两个函数一般怎么用呢?
谢谢
展开
 我来答
Rankabc
2014-02-07 · TA获得超过3561个赞
知道大有可为答主
回答量:3705
采纳率:59%
帮助的人:1125万
展开全部
读数据块函数调用的一般形式为:
fread(buffer,size,count,fp);
写数据块函数调用的一般形式为:
fwrite(buffer,size,count,fp);
其中:
buffer 是一个指针,在fread 函数中,它表示存放输入数据的首地址。在fwrite 函
数中,它表示存放输出数据的首地址。
size 表示数据块的字节数。
count 表示要读写的数据块块数。
fp 表示文件指针。
xoaxa
2014-02-07 · TA获得超过8613个赞
知道大有可为答主
回答量:6415
采纳率:72%
帮助的人:3611万
展开全部

以"wb+"方式打开的二进制文件用于读/写,如果这个文件不存在,则建立这个文件,如果存在,则打开这个文件。

读写文件时,还有一个用于读/写文件内容的指针,这个指针随着fread()和fwrite()函数的操作而改变,控制该指针的函数是int fseek(FILE *stream, long offset, int fromwhere);。

就以上原因,修改如下:

#include<stdio.h>

int main() {
FILE *fp = fopen("a.txt","wb+");
int a,b;
a = 5;
fwrite(&a,sizeof(int),1,fp);
fseek(fp,-(long)sizeof(int),SEEK_CUR); // 从当前位置向后移动读/写指针
fseek(fp,0,SEEK_CUR); // 改变为"读"模式
fread(&b,sizeof(int),1,fp);
printf("%d\n",b);
fclose(fp);
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式