关于C读文件strcmp函数比较字符串
风-之-谷 2014-03-02 02:45:26 Sno Sname Ssex Sage Sdept
20120001 李勇 男 20 CS
20120002 刘晨 女 19 CS
20120003 王敏 女 18 MA
20120005 张立 男 19 IS
读文本文件,查询信息
#include<string.h>
#include<ctype.h>
#include<malloc.h>
#include<stdio.h>
#include<stdlib.h>
#include<process.h> // exit()
#define TRUE 1 // 函数结果状态代码
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define NULL 0
typedef int Status; // Status是函数的类型,其值是函数结果状态代码,如OK等
typedef struct Student{
char Sno[8];
char Sname[20];
char Ssex[2];
int Sage;
char Sdept[2];
struct Student *next;
}Student,*LinkList;
Status InitList(LinkList &L){ //构造一个空表
L=(Student*)malloc(sizeof(Student));
if(L!=NULL){
printf("电脑空间不足!\n");
return ERROR;
}
L->next=NULL;
return OK;
}
Status ReadStudent(LinkList &L){ //读取Student文件
Student *s,*p;
FILE *fp;
char buf[1024];
s=L;
fp=fopen("F:\\Student.txt","r+");
fgets(buf,1024,fp); //跳过第一行
while(fgets(buf,1024,fp)!=NULL){ //读取每一行数据,直至读完
p=(Student*)malloc(sizeof(Student));
sscanf(buf,"%s %s %s %d %s ",p->Sno,p->Sname,p->Ssex,&(p->Sage),p->Sdept);
s->next =p;
s=p;
p->next =NULL;
}
fclose(fp);
return OK;
}
Status Search_PutoutStudent(LinkList L){ //根据学号输出学生的信息
char sno[8];;
Student *s=L;;
printf("请输入你所要查询学生的学号:\n");
scanf("%s",sno);
while(s->next!=NULL && strcmp(s->next->Sno,sno))
s=s->next;
if(s==NULL){
printf("您所输入的学号有误,不存在此学号的学生。\n");
return ERROR;
}
printf("学号\t姓名\n性别\t年龄\t系别\n");
printf("%s\t%s\t%s\t%d\t%s \n",s->Sno,s->Sname,s->Ssex,s->Sage,s->Sdept);
return OK;
}
void main(){
LinkList L;
InitList(L);
ReadStudent(L);
Search_PutoutStudent(L);
}
调试时,输入20120001strcmpy()函数返回不是0