01/10/2018, 09:33
Code tìm kiếm tên không biết sai ở đâu
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include<string.h>
#include<stdlib.h>
#define MAX 100
typedef struct SinhVien
{
char HoTen[30];
int Tuoi;
char Lop[10];
char *strTemp;
}Sv;
Sv sinhvien[MAX];
int n;
void Nhap()
{
int i;
printf("nhap so sinh vien: ");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("
Nhap ho ten sinh vien thu %d: ",i+1);
fflush(stdin);
gets(sinhvien[i].HoTen);
printf("
Nhap so tuoi: ");
scanf("%d",&sinhvien[i].Tuoi);
printf("
Hoc lop: ");
fflush(stdin);
gets(sinhvien[i].Lop);
}
}
void Hienthi()
{ int i;
system("cls");
printf(" Danh sach sinh vien
");
printf("%20s%20s%10s
","Ho Ten","Tuoi","Lop");
for(i=0;i<n;i++)
{
printf("%20s%20d%10s
",sinhvien[i].HoTen,sinhvien[i].Tuoi,sinhvien[i].Lop);
}getch();
}
int timten(char *Hovaten,char *Ten)
{
int lenhoten;
int lenten;
int i,j=0;
int minlen;
char *strTemp;
int lenTemp=0;
int giatri=1;
lenhoten=strlen(Hovaten);
lenten=strlen(Ten);
minlen=lenhoten<=lenten?lenhoten:lenten;
for(i=0;i<lenhoten;i++)
{
if((Hovaten[i]>='a')&&(Hovaten[i]>='z'))
Hovaten[i]=Hovaten[i]-32;
}
for(i=0;i<lenten;i++)
{
if((Ten[i]>='a')&&(Ten[i]>='z'))
Ten[i]=Ten[i]-32;
}
for(i=Hovaten-1;i>=0;i--)
{
if(Hovaten[i]==' ')
break;
lenTemp++;
}
j = lenTemp - 1;
if (minlen != lenTemp) {
giatri = 0;
return giatri;
strTemp = (char*)malloc(sizeof(char) * (lenTemp+ 1));
for (i =Hovaten - 1; i >= 0; i--)
{
if (Hovaten[i] == ' ')
break;
strTemp[j] = Hovaten[i];
j--;
}
strTemp[lenTemp] = ' ';
for (j = 0; j < lenTemp; j++)
{
if (strTemp[j] != Ten[j])
{
giatri = 0;
break;
}
}
free(strTemp);
return giatri;
}
}
void timkiemsv() {
char Ten[20];
Sv Svien;
int cosv;
cosv = 0;
printf("Nhap ten sinh vien can tim: ");
fflush(stdin);
gets(Ten);
printf("-------HO TEN--------|----TUOI-----|---------LOP---------|
");
while (1)
{
if (timten(Svien.HoTen,Ten) == 1)
{
cosv = 1;
printf("%20s |%12d |%20s |
", Svien.HoTen, Svien.Tuoi, Svien.Lop);
}
}
if (cosv == 0)
printf("Khong co sinh vien nao!
");
}
void menu()
{
int luachon;
while(1)
{
system("cls");
printf("Chon lua chuc nang
");
printf("1. Chon 1 de Nhap danh sach sinh vien
");
printf("2. Chon 2 de Hien thi danh sach sinh vien
");
printf("3. Chon 4 de tim kiem sinh vien theo ten
");
printf("4. Chon 3 de Ket thuc
");
scanf("%d",&luachon);
switch(luachon)
{
case 1:
Nhap(); break;
case 2:
Hienthi(); break;
case 3:
exit(1);break;
case 4:
timkiemsv(); break;
}
}
}
int main()
{
menu();
return 0;
}
Bài liên quan
Hình như chương trình này của bạn bị giới hạn không được dùng các hàm thao tác xâu như
strcpy, strcmp,...
ah?vâng bạn ạ
vâng bạn ạ