输出时要怎样做txt文件里的数字才不会是乱码。

沉珂 2005-10-14 12:12:59
#include<stdio.h>
#include<stdlib.h>
struct student
{
int num;
char name[20];
int age;
char add[30];
}stud[4];
main()
{
int i ;
FILE *in;
for(i=0;i<4;i++)
{
printf("请输入学号:");
scanf("%d",&stud[i].num);
printf("请输入姓名:");
scanf("%s",stud[i].name);
printf("请输入年龄:");
scanf("%d",&stud[i].age);
printf("请输入地址:");
scanf("%s",stud[i].add);
}
if((in=fopen("stud_list.txt","wb+"))==NULL)
{
printf("目标文件无法打开!");
exit(0);
}
for(i=0;i<4;i++)
{
if((fwrite(&stud[i],sizeof(struct student),1,in))!=1)
printf("输入时发生出错");
}
fclose(in);
}

在stud_list.txt文件里为什么学号和年龄显示的是乱码。。。
文件stud_list.txt要以什么方式打开才行?
请问要怎么改。。。。
谢谢
...全文
770 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
UltraEdit支持很多格式的。我写的日志文件不管是.log还是.txt都可以用它打开啊。你应该是其他方面的问题吧
mainwind 2005-10-15
  • 打赏
  • 举报
回复
记事本应该是UNICODE码,在存文件时INT被改变了
沉珂 2005-10-15
  • 打赏
  • 举报
回复
用fprintf确实就可以正确显示,
我想应该是这样。。。
用fwrite的话,不进行二进制的转换,
而用fprintf,把二进制转化为ASCII码。
所以,用fprintf就能显示。。。
用WORD也不行。。。
提示要转转换器,装了也不行,显示方框。。。
码的不一样,问题还真多。。。
上次弄jsp,也搞得很郁闷。。。

这样的话,用fwrite就是不行了。。。。

waterczh 2005-10-14
  • 打赏
  • 举报
回复
更正:不光是这个的问题
waterczh 2005-10-14
  • 打赏
  • 举报
回复
UltraEdit打开都不对
那就光是这个的问题了
检查吧
BluntBlade 2005-10-14
  • 打赏
  • 举报
回复
深深地叹一口气。飘过。
fjm_520 2005-10-14
  • 打赏
  • 举报
回复
#include<stdio.h>
#include<stdlib.h>
struct student
{
char num[10];
char name[20];
char age[5];
char add[30];
}stud[2];
void main()
{
int i ;
FILE *in;
for(i=0;i<2;i++)
{
printf("please input sno:");
scanf("%s",stud[i].num);
printf("please input sname:");
scanf("%s",stud[i].name);
printf("input age:");
scanf("%s",stud[i].age);
printf("input address:");
scanf("%s",stud[i].add);
}
if((in=fopen("stud_list.txt","wt"))==NULL)
{
printf("unopen!");
exit(0);
}
for(i=0;i<2;i++)
{
if((fwrite(&stud[i],sizeof(struct student),1,in))!=1)
printf("eorror");
fprintf(in,"\n");
}
fclose(in);
}


我改了一下你的程序,这样写就能显示了。
沉珂 2005-10-14
  • 打赏
  • 举报
回复
用fprintf要怎么改呢?
我用的是潭浩强的书,
上面的就是这个例子。。。
Kvci 2005-10-14
  • 打赏
  • 举报
回复
if((in=fopen("stud_list.txt","wb+"))==NULL)
wb+ 中 w 表示write B表示二进制
你这样是以写二进制文件的方式打开的文件
改成这样就可以了
if((in=fopen("stud_list.txt","w+"))==NULL)
然后不能用fwrite
要用fprintf
沉珂 2005-10-14
  • 打赏
  • 举报
回复
to songsong33:
用UltraEdit 打开好像也不行。。。。
要怎么改。。。。。-_-|||
K 2005-10-14
  • 打赏
  • 举报
回复
先看一下comupter system a programmer's perspective,在学语言
沉珂 2005-10-14
  • 打赏
  • 举报
回复
to : fjm_520(蓝)
为什么用int型不行呢?
  • 打赏
  • 举报
回复
楼主原来程序输入结果用 UltraEdit 打开应该没有乱码的

69,371

社区成员

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

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