| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3562 人关注过本帖
标题:fscanf()与fread()的区别
只看楼主 加入收藏
我菜119
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:938
专家分:1756
注 册:2009-10-17
结帖率:98.26%
收藏
已结贴  问题点数:20 回复次数:3 
fscanf()与fread()的区别
fscanf()与fread()之间有什么区别???
有高手帮忙看一下我的这个程序
#define LONG 5
typedef struct td {char name[10];
                char code[20];
                int age;
}STUDENT;
void fun(STUDENT *std);
#include<string.h>
#include<stdlib.h>
 #include<stdio.h>
 main()
 {
 STUDENT  student[LONG];
 FILE *fp;
 char filename[20];
int count;
 gets(filename);
 fp=fopen(filename,"rb");
  if(fp==NULL){
  fprintf(stderr,"Error of opening");
  exit(1);
  }
  for(count=0;count<LONG;count++)
  fscanf(fp,"%s%s%d",student[count].name,student[count].code,student[count].age);
(这里我开始用的是fread()可是读不了文件中的内容)
  fun(student);
  for(count=0;count<LONG;count++)
  printf("%s\n%s\n%d\n",student[count].name,student[count].code,student[count].age);
  fclose(fp);
  return 0;
  }
  void fun(STUDENT *std)
  {
  STUDENT p_student;
  int i,j;
   for(i=0;i<LONG;i++)
   for(j=i+1;j<LONG;j++){
if(strcmp((std+i)->name,(std+j)->name)>0){
  p_student=*(std+i);
  *(std+i)=*(std+j);
*(std+j)=p_student;
}
else
if(strcmp((std+i)->name,(std+j)->name)==0)
if((std+i)->age<(std+j)->age){
p_student=*(std+i);
  *(std+i)=*(std+j);
*(std+j)=p_student;
}
}
}
这个是文件中的内容
jiangjun 08170106 20
wangmin 08170122 21
jiangmin 08170107 22
guyang 08170104 20
yuzhuang 08170123 21
  
这个是输出的内容:
guyang
08170104
0
jiangjun
08170106
0
jiangmin
08170107
0
wangmin
08170122
0
yuzhuang
08170123
0
怎么输出会有错误呢??
搜索更多相关主题的帖子: fscanf fread 
2009-11-23 12:22
陈大师
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:231
专家分:1038
注 册:2009-11-4
收藏
得分:5 
http://zhidao.baidu.com/question/11832247.html这个可以上百度····
2009-11-24 13:11
caojulians
Rank: 2
等 级:论坛游民
帖 子:39
专家分:67
注 册:2009-11-15
收藏
得分:10 
fread()与fwrite()对应,文件内容应该是二进制形式(“b”)的机内编码,不需要格式控制符,但要读写单位、数量、缓冲区首址等。
fscanf()与fprintf()对应,文件内容应该是文本形式的(“t”)--所以要有格式控制符(如%d、%c、%s等)
2009-11-24 13:31
caojulians
Rank: 2
等 级:论坛游民
帖 子:39
专家分:67
注 册:2009-11-15
收藏
得分:5 
fscanf(fp,"%s%s%d",student[count].name,student[count].code,student[count].age);
两个%s读取的字符串怎么分割啊?文件中一行中两个“串”中间可没有“\0”啊!?
2009-11-24 13:35
快速回复:fscanf()与fread()的区别
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015463 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved