CJ_Finger
2015-01-18 02:25
采纳率: 60%
浏览 1.8k
已采纳

C语言【文件读写】的问题

各位学长,为什么用fprintf写入,也会出现乱码?代码太长,我截取片段
struct stu
{
int numb;
char name[10];
int score;
}student[100];

void write(int n)
{
int i;
FILE *fp=fopen("file.txt","a+");
for(i=0;i<n;i++)
{
fprintf(fp,"%d %s %d\n",&student[i].numb,&student[i].name,&student[i].score);
}
fclose(fp);
printf("录入结束!\n");
}

for(m=0;m<a;m++)
{
scanf("%d%s%d",&student[m].numb,&student[m].name,&student[m].score);
}
write(a);

在文本却显示学号和成绩都是一串数字了,如下

4373608 jat 4373624
4373628 kay 4373644
4373648 ktt 4373664

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • threenewbee 2015-01-18 02:41
    已采纳

    scanf才需要取地址,(f)printf都不需要。

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • threenewbee 2015-01-18 02:41

    &student[i].numb
    去掉&

    评论
    解决 无用
    打赏 举报
  • 微wx笑 2015-01-18 02:52

    fprintf是 以二进制的方式写入的吧。以文本的形式打开就是乱码了

    评论
    解决 无用
    打赏 举报
  • threenewbee 2015-01-18 02:56

    其实这个道理很简单,scanf需要给传入的变量赋值嘛,所以需要指针。否则函数怎么将输入的值再传给主程序呢?
    而printf是输出,除了字符串以外,对于整数,它只要获得这个参数而无需改变它,所以不用指针。

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题