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;
}
Mato Nguyen viết 11:37 ngày 01/10/2018

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?

Trần Đức Trung Kiên viết 11:34 ngày 01/10/2018

Hình như chương trình này của bạn bị giới hạn không được dù

vâng bạn ạ

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 ạ

Bài liên quan
0