| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 357 人关注过本帖
标题:昨晚编完一道题,突然把一代码换位置,发现问题,帮解析~~~~
只看楼主 加入收藏
wangnengchao
Rank: 2
等 级:论坛游民
帖 子:90
专家分:55
注 册:2011-5-2
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:2 
昨晚编完一道题,突然把一代码换位置,发现问题,帮解析~~~~
/*利用操作系统的任意一个文本编辑器建立一个通信录文件address.txt,其数据可以是若干个朋友的信息记录。
一个记录占一行,每个记录内容由姓名、手机电话和E-mail地址等数据组成。设计一个C语言程序,能够根据
输入的朋友的姓名来查找他(她)的完整信息,包括姓名、手机电话和E-mail等。 */
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct fri_infor{
    char name[20];
    char telephone[50];
    char e_mail[50];
};
int main(void)
{
    FILE *fp;
     char find_name[20];
    struct fri_infor friend;
    if((fp=fopen("C:\\Users\\wang\\Desktop\\address.txt","r"))==NULL)
    {
      printf("file open faile \n");
      exit(2);
    }
    printf("Please input your friend's name: ");
    scanf("%s",find_name);
   fscanf(fp,"%s %s %s\n",friend.name,friend.telephone,friend.e_mail);//(1)
    while(feof(fp)==0)
    {      
        if((strcmp(find_name,friend.name))==0)
        printf("%s %s %s\n",friend.name,friend.telephone,friend.e_mail);
        fscanf(fp,"%s %s %s\n",friend.name,friend.telephone,friend.e_mail);//(2)
    }
    fclose(fp);
    return 0;
}
  (1)、(2)那样用会出现文件最后一行的信息不能被读取!!!!而把调回来就可全部读取了!!如下:                        
     while(feof(fp)==0)
    {         
        fscanf(fp,"%s %s %s\n",friend.name,friend.telephone,friend.e_mail);   
        if((strcmp(find_name,friend.name))==0)
        printf("%s %s %s\n",friend.name,friend.telephone,friend.e_mail);
        
    }
               
搜索更多相关主题的帖子: friend 手机电话 编辑器 C语言 朋友 
2011-06-19 13:07
voidx
Rank: 12Rank: 12Rank: 12
来 自:邯郸
等 级:火箭侠
帖 子:1250
专家分:3538
注 册:2011-4-7
收藏
得分:20 
前一种写法在每次 while 循环的循环体执行一次之后会读取下一行的数据,并将文件游标向后移。
也就是说,在读取最后一行数据后,游标已经指向 eof 了。
这时候 feof(fp) == 1,不会再执行循环体。
所以最后一行的数据不会被列入搜索范围。

只有第二种写法是正确的
2011-06-19 13:53
wangnengchao
Rank: 2
等 级:论坛游民
帖 子:90
专家分:55
注 册:2011-5-2
收藏
得分:0 
回复 2楼 voidx
谢谢高手哈
2011-06-19 14:21
快速回复:昨晚编完一道题,突然把一代码换位置,发现问题,帮解析~~~~
数据加载中...
 
   



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

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