32位xp平台,源码如下:
#include "stdio.h"
int main()
{
FILE *file = fopen("E:/test.dat", "w+");
int a = 2583;
fwrite(&a, sizeof(int), 1, file);
fclose(file);
return 0;
}
用gcc编译,执行后用UE查看值为:17 0D 0A 00 00。为什么多出一个字节?
fwrite写入int
答案:2 悬赏:60
解决时间 2021-02-18 06:39
- 提问者网友:但未伤到心
- 2021-02-17 09:07
最佳答案
- 二级知识专家网友:我颠覆世界
- 2021-02-17 10:28
fwrite用与二进制读写 ,你只是用w+打开,应该是wb+
全部回答
- 1楼网友:承载所有颓废
- 2021-02-17 12:04
#include
#include
void aaa();
struct student
{
char name[5]; //姓名
int age; //年龄
int num; //学号
char addr[5]; //地址
}stu[4];
void main()
{
int i;
printf("请输入4个学生姓名、年龄、学号、地址,按回车!\n");
for(i=0;i<4;i++)
{
scanf("%s%d%d%s",stu[i].name,&stu[i].age,&stu[i].num,stu[i].addr);
}
aaa();
}
#define max_buf 1000
void aaa()
{
file *fp;
int i;
char outbuf[max_buf];
char tempbuf[50];
memset(outbuf,0,max_buf);
if((fp=fopen("123.txt","w"))==null)
{
printf("无法打开文件!\n");
return;
}
strcpy(outbuf,"姓名 年龄 学号 地址");
for(i=0;i<4;i++)
{
sprintf(tempbuf,"\n%s %d %d %s",stu[i].name,stu[i].age,stu[i].num,stu[i].addr);
strcat(outbuf,tempbuf);
}
if(fwrite(outbuf,strlen(outbuf),1,fp)!=1)
{
printf("写入错误!\n");
}
fclose(fp);
}
你的问题在于你要输出一个文本,但是你却没有进行文本编辑,直接把数据结构中的数据输出,这样是二进制的,不是文本的。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯