Pomoc w przerobieniu wyszukiwarki (z pliku)

0

Witam. Mam przerobić ten kod tak, aby mozna bylo wpisać powiedzmy fragment imienia lub nazwiska i program ma wyszukać tę osobę z pliku i wyswietlic na ekranie.
Dodałem załącznik z listą osób. Prosiłbym o pomoc.

#include<stdio.h>
#include<stdlib.h> 
#include<string.h>

struct Osoba{
  char firstName[32]; 
  char lastName[32];
  int age;
 

};  
int main()
{ 
   char x[32]; 
  char y[32];
  
   FILE *plik = fopen("lista.txt", "r");
   struct Osoba *a;
   int N,i,z,n;
   if(plik == NULL)
   {
   printf("Blad otwarcia pliku\n");
   exit(-1); 

   
   }
fscanf(plik, "%d", &N);

 a = malloc(N*sizeof(struct Osoba));
for(i=0; i<N; i++)
{
  fscanf(plik, "%s", x);
  fscanf(plik, "%s", y);
  fscanf(plik, "%d", &z);
  strcpy(a[i].firstName, x);
  strcpy(a[i].lastName, y);
  a[i].age=z;



}
scanf("%d", &n);
  printf("%s %s %d\n", a[n].firstName, a[n].lastName, a[n].age);

free(a);
return 0;
}
0

Co w przypadku kiedy wpiszę powiedzmy fragment imienia lub nazwiska, a będzie się on pokrywał z innymi imieniami i nazwiskami? Czytaj, będzie więcej niż jedna możliwość.

Edit: Czy fragment imienia lub nazwiska oznacza jego początek? Czy też fragment może być ze środka lub końca?

0

Moze pokazac na ekranie kilka osob o tym samym imieniu i nazwisku

0

Początek

0

Przerobilem ten kod tak, ze po wpisaniu imienia (drukowanymi) wypisuje mi wszystkie osoby z listy o tych imionach. Jak mam przerobic ten kod, zeby po wpisaniu fragmentu ze srodka lub konca imienia wczytywal tak samo?

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

struct Osoba{
	char firstName[32];
	char lastName[32];
	int age;
	};



int main()
{
	char x[32],y[32];
	int N, i, z, n;
	FILE *plik;
	struct Osoba *a;
	const char szukana[32];
	char *p, *o;


	plik = fopen("lista.txt", "r");

	fscanf(plik, "%d", &N);
	a = malloc(N*sizeof(struct Osoba));

	for(i=0;i<N;++i)
	{
	fscanf(plik,"%s", x);
	fscanf(plik,"%s", y);
	fscanf(plik,"%d", &z);
	strcpy(a[i].firstName, x);
	strcpy(a[i].lastName, y);
	a[i].age=z;
	}

    scanf("%s", szukana);

    // Prints the result
    for(i=0; i<N; ++i)
    {
    //o = strstr(a[i].lastName, szukana);
    p = strstr(a[i].firstName, szukana);

    if (p) {
        printf("%s %s %d\n", a[i].firstName, a[i].lastName, a[i].age);
    } //else
       // printf("String not found\n");
    }


    //printf("%s %s", szukana);
	//scanf("%d", &n);
	//printf("%s %s %d\n",a[n].firstName, a[n].lastName, a[n].age);





	free(a);
	return 0;
}

0

Sprawdz sobie taka funkcje: strncmp

1 użytkowników online, w tym zalogowanych: 0, gości: 1