C语言文件读取和单链表的添加、删除和排序等操作实例

/*
1、从文本文件中导入班级学生信息:学号、姓名、性别、籍贯
2、将学号重复的删除
3、显示导入的学生信息
4、按学号、姓名、性别、籍贯相等和不相等查找
5、多次查找
6、查找结果写入文件
7、VC++6.0编译通过
//以下代码存为main.cpp
*/

#include <stdio.h>
#include <malloc.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>


#define CLRSCR system("cls")
#define PRINT_TITLE "\n序号\t学号\t\t姓名\t性别 \t籍贯\n"
#define PRINT_FORMAT "%d\t%s\t%s\t%s\t%s\n",i,p->stu.num,p->stu.name,p->stu.sex,p->stu.hometown
#define WRITE_FORMAT "%s\t%s\t%s\t%s\n",p->stu.num,p->stu.name,p->stu.sex,p->stu.hometown
#define READ_FORMAT "%s %s %s %s",&p->stu.num,&p->stu.name,&p->stu.sex,&p->stu.hometown

//定义学生结构体
struct student

 char num[9];
 char    name[7];//三个汉字长度为6个字节,如果不多定义一个字节来存放字符串结束符'\0',当输出name时会把sex和hometown也输出
 char sex[3];
 char hometown[7];

};

//定义单链表结点
typedef struct listnode 
{   
 struct student stu;
 struct listnode *next;
}node;

int MySelect(node * head,node *temp)   //返回查找到符合条件的项目数

 int equal,N;
 char CHAR[10];


 printf("----------------------------------------------\n\n");
 printf("查找模式:1是相等查找,0是不相等查找\n");
 printf("列名编号:1是学号,2是姓名,3是性别,4是籍贯\n");
 printf("\n--------------------------------------------\n");

 do
 {
 printf("\n选择查找模式:");//用scanf时输入字母会错误 改用getche,不用scanf
 equal=getche();
 if((equal!='1')&&(equal!='0'))
  printf("\n\t输入错误\n");
 }
 while((equal!='1')&&(equal!='0'));
 equal=equal-48;


 
 do
 {
 printf("\n输入列名编号:");
 N=getche();
 if(N!='1'&&N!='2'&&N!='3'&&N!='4')
  printf("\n\t输入错误\n");
 }
 while(N!='1'&&N!='2'&&N!='3'&&N!='4');
 switch(N)
 {
 case '1': N=0;break;
 case '2': N=9;break;
 case '3': N=16;break;
 case '4': N=19;break;
 }

 

 printf("\n输入关键字:");
 scanf("%s

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值