Skocz do zawartości

Recommended Posts

Napisano

czy da się jakoś prosto porównać dwie tablice char o różnych długościach, a dokładniej porównujemy pierwsze znaki, a reszta tablic jest NULL???

//Chodzi o coś takiego
char a[10];
char b[20];
/*wczytujemy z klawiatury*/
/*porównanie: if(a==b) nie działa*/

i pytanie nr.2

char polecenie[10];
/*wczytuemy*/
switch(polecenie){
case "abc":
...
}

czy w tym kodzie błąd wynika z różnej długości łańcuchów czy z czego innego??
Prosiłbym o pomoc
pozdrawiam

Napisano

Stringow nie da sie tak porównać. Musisz zrobic to tak:

bool porownaj(char *text1, char *text2)
{
  if(strlen(text1)!=strlen(text2)) return false;
  int i = 0;
  while(text1[i])
  {
     if(text1[i]!=text2[i]) return false;
  }
  return true;
}

char a[10], b[20];
// wczytanie do zmiennych a i b - oczywisice trzeba zakonczyc NULLem ;D
if(porownaj(a,b)) printf("zmienne sa takie same");

co do problemu nr 2 to wyjasnienie probelmu nr 1 powinno ci odpowiedziec na pytanie nr 2 :D

Napisano

Już to załatwiłem strcmpem. Po prostu if(strcmp(lancuch1,lanc2)){...} Gdzie ja miałem głowę?? Cóż, powróciłem do DOSa po dłuuuuugiej przerwie, pewnie jeszcze wielu rzeczy nie pamiętam.

Co do drugiego to dalej nie wpadłem na to ale myślę pracowicie ;) ;)

PS. Mówiłem Ci kiedyś Piasiu że fajnie wyszedłeś na tym zdjęciu?? :)  :)  ;)

Napisano
Spoon napisał:
switch może porównywać tylko liczby, więc nie możesz napisać tak jak napisałeś :) W twoim przypadku porównujesz adresy w pamięci, a nie stringi.

i pojedyncze char-y :D :)

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gość
Odpowiedz...

×   Wkleiłeś zawartość bez formatowania.   Usuń formatowanie

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Utwórz nowe...