文件写如的疑问

Tangxiang 2006-09-09 11:29:41
当写如时候,字符可以正常显示,但是数字却是乱码,
请教哈
是不是和写入方式有关呢?(wb)
代码如下:
#include<stdio.h>
#include<stdlib.h>

#define WLM printf("*******End of the program!******")
#define SIZE 4
struct student_type
{
char name[10];
int num;
int age;
char addr[20];
} stud[SIZE];
//define the struct

void save(char *pfn)
{
FILE *fp;
int i;
char *pf=pfn;

if((fp=fopen(pf,"wb"))==NULL)
{
printf("Can't open the file!\n");
return; //exit(0);
}

for(i=0;i<SIZE;i++)
{
if(fwrite(&stud[i],sizeof(struct student_type),1,fp)!=1)
{
printf("Write Error!\n");
}
}
fclose(fp);//Can't forget!

}//End of The Save()

main()
{
int i;
char filename[20];
char *pfn=filename;

printf("Please input the file name:");
scanf("%s",filename);

printf("Please input the Students' contents:\n");

for(i=0;i<SIZE;i++)
{
scanf("%s%d%d%s",stud[i].name,&stud[i].num,&stud[i].age,stud[i].addr);

save(pfn);
}

WLM;
system("pause");
}
...全文
133 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
daydayupdu 2006-09-10
  • 打赏
  • 举报
回复
以内存快的方式读写,和wb,w没有关系吧,内存里有什么就写进文件什么,你的程序写入时内存里int变量绝对不是输入的数字串的ASCII码,所以用写字板打开是乱码。但是是可以用fread读出来的。所以,你的程序应该是没有问题的。
daydayupdu 2006-09-10
  • 打赏
  • 举报
回复
用fread 和fwrite读写内存快,长度是sizeof(student_type)
Tangxiang 2006-09-09
  • 打赏
  • 举报
回复
可是使用w写入,也还是乱码啊???
tailzhou 2006-09-09
  • 打赏
  • 举报
回复
二进制打开写的当然是乱码呀,这是正常的;
用fread是可以再读出来的.
Tangxiang 2006-09-09
  • 打赏
  • 举报
回复
中午时间都吃饭去了啊……
我也去……
回来看看有没有人回……
Tangxiang 2006-09-09
  • 打赏
  • 举报
回复
那该怎么样修改代码呢?
譬如生成一个txt文件,写入数据,
数字以乱码显示……
zdqzdq 2006-09-09
  • 打赏
  • 举报
回复
wb打印出来的是2进制
darkrainbow 2006-09-09
  • 打赏
  • 举报
回复
那不是乱码,那是16进制,因为你的写入方式是"wb"啊,还有一个就是在PC上面是低字节开始的,例如A7 01 00 00 表示一个int型数据,转换成10进制的话就是 423=0x000001A7.
Tangxiang 2006-09-09
  • 打赏
  • 举报
回复
顶住啊!、
不能让它沉下!!!!

69,368

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧