Avatar billede Slettet bruger
20. december 2005 - 16:53 Der er 7 kommentarer og
1 løsning

Sammenlign indtasting med struct?

Hej

Jeg har en struct, som indeholder navn og efternavn, som er af typen char. Vil gerne kunne søge efter et bestemt navn. Dvs man indtaster et navn og så bliver struct gennemsøgt. Hvis person er at finde så udskriver den person navn og hvis ikke, så skriver den bare noget i retning af "person findes ikke"

Nogen som kan hjælpe mig på vej?
Avatar billede arne_v Ekspert
20. december 2005 - 16:58 #1
du har vel et array af struct og så løber du arrayet igennem og laver strcmp
på det du leder efter og et eller flere felter i structen
Avatar billede Slettet bruger
20. december 2005 - 17:15 #2
strcmp funktionen kendt jeg ikke, men det ser jo ud til at finder ganske fornuftigt :-)

Du skulle vel ikke have en hurtig måde, til at lave et input til små bogstaver?

Husk at smide et svar
Avatar billede arne_v Ekspert
20. december 2005 - 17:23 #3
strlower(s) er ikke standard men en del compilere har den

ellers kan du konvertere et tegn af gangen med tolower(c)

de er i henholdsvis string.h og ctype.h

men måske er det i virkeligheden strcasecmp du søger fordi den ignorerer case

og et svar
Avatar billede Slettet bruger
20. december 2005 - 17:24 #4
Det virker ikke helt, hvis jeg har mere end 1 objekt i min struct. Jeg har følgende kode:


hentLinie(navn, 20); //Benytter funktionen hent linie
                printf("Du indtastede: %s\n\n\n", navn);


                while (flag != 1)
                {
                  ptr = strcmp(navn, personer[i].forNavn);
                  if (ptr == 0)
                  flag = 1;
                  i++;
                }

//Funktion hentLinie:

          int hentLinie(char linie[], int MAX)
          {
          int i =0;
          char ind;
          while (i<MAX-1 && ( ind = getchar() ) != '\n')
            linie[i++] = ind;
          linie[i]='\0';
          return i;
          }

Er det helt hen i skoven
Avatar billede Slettet bruger
20. december 2005 - 17:27 #5
Fandt fejlen. Havde glemt at sætte i til 0, så den er sikkert starter med en eller andet værdi
Avatar billede Slettet bruger
20. december 2005 - 17:27 #6
Takker for hjælpen
Avatar billede arne_v Ekspert
20. december 2005 - 17:28 #7
umiddelbart vil jeg mene at

hentLinie(navn, 20);

kunne erstattes af

fgets(navn, 20, stdin);

så du slet ikke behøvede nogen funktion
Avatar billede arne_v Ekspert
20. december 2005 - 17:30 #8
og du skal nok gøre noget så din løkke terminerer selvom der ikke findes
noget match

generelt tror jeg at for løkke er bedre end while løkke til at gennemløbe arrays
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester