昨晚编完一道题,突然把一代码换位置,发现问题,帮解析~~~~
/*利用操作系统的任意一个文本编辑器建立一个通信录文件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);
}