c语言文件写入连续int,c语言fwrite写入int问题,怎么解决?

本文探讨了在C语言中使用fwrite函数将包含int类型的struct数组写入文件时遇到的问题。示例代码展示了如何读取用户输入并尝试写入文件,但出现了数据混乱的情况。读者在评论中指出了代码中可能存在的问题,并提供了修改建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

c语言fwrite写入int问题,怎么解决?

#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();

}

void aaa()

{

FILE *fp;

int i;

if((fp=fopen("123.txt","w"))==NULL)

{

printf("无法打开文件!\n");

return;

}

for(i=0;i<4;i++)

{

if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1)

{

printf("写入错误!\n");

}

}

fclose(fp);

}

运行时输入:

1 1 1 1

1 1 1 1

1 1 1 1

1 1 1 1

我把存放到相对路径123.txt但是文件最后显示却是:(int类型是乱码)

1     1 1     1 1     1 1     1

09-01-13  Macy263 发布

67b0a70febe552c922c54bb8560d6ef6.png

f4a132536ed76b592a2581f46f11f33c.png

楼主这句有问题for(i=0;str[i]!='/0';i++); ,应该为for(i=0;str[i]!='\0';i++); 其他没问题啊。

#include

#include

int main()

{

FILE *fp;

int i;

char path[160],str[500];

int size =0;

printf("输入文件地址或者创建一个新文件:\n");

gets(path);

fp=fopen(path,"a+");

if(fp == NULL)

{

fp=fopen(path,"w+");

if(fp == NULL)

{

printf("文件打开失败。\n");

exit(0);

}

}

printf("请输入文件正文,按回车结束:\n");

gets(str);

for(i=0;str[i]!='\0';i++);

size = fwrite(str,i,1,fp);

if(size!=1) /*为什么不能追加,只能创建?追加写入就错误*/

{

printf("文件写入错误。\n");

exit(0);

}

fclose(fp);

return 0;

}

10-04-11

| 添加评论

| 打赏

◆◆

请登录后再发表评论!

◆◆

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值