[C]Porównywanie stringów pobranych przez scanf

0

Witam.
Próbuję (znowu) podejść do C i być może się nauczyć wreszcie coś w nim robić ;]
Wcześniej próbowałem, ale z marnymi skutkami... teraz po całkiem sporej znajomości Python'a mam nadzieję, że pójdzie mi lepiej

W każdym razie mam znów problem z bardzo prostą teoretycznie rzeczą.
Chciałem poćwiczyć sobie obsługę stringów w C (które były prawdopodobnie główną przyczyną rezygnacji z C przy poprzednim podejściu... można się nimi ładnie na start zrazić).

Program jest raczej prosty, choć jak na początek spore "wyzwanie" sobie walnąłem.
Miał on pobierać parametry aut takie jak marka, model i maksymalna prędkość. Program miał cały czas pytać o nowe auta i je dodawać do momentu wpisania END jako marki, wtedy program miał się zakończyć i wyświetlić średnią prędkość maksymalną tych wszystkich aut.
Nie wiem na razie jak tam inne elementy działają, ale niestety kończenie pracy przy wpisaniu END nie działa...
Wpisuje END, a on nie kończy pracy... co ciekawe dałem jeszcze instrukcję pokazującą zawartość zmiennej jeśli to nie jest END... i wyświetla, że faktycznie wpisałem END... więc czemu nie przerywa pracy?

#include <stdio.h>

int main()
{
  char marka[10][50], model[10][50];
  int i = 0, predkosc[10], srednia = 0, a = 0;
  printf("Wpisz END zamiast marki, aby zakończyć dodawanie aut i przejść do podsumowania. \n\n");
  while(1)
    {
      printf("Auto %i: \n", i);
      printf("Marka: ");
      scanf("%s", marka[i]);
      if(marka[i]=="END")
        {
          break;
        }else printf("%s", marka[i]);
      printf("Model: ");
      scanf("%s", model[i]);
      printf("Prędkość maksymalna: ");
      scanf("%i", &predkosc[i]);
      printf("\n");
      i++;
    }
  for(a = 0; a<i; a++)
    {
      srednia+=predkosc[a];
    }
  srednia = srednia / i;
  printf("\n\nŚrednia prędkość maksymalna: %i", srednia);
  return 0;
}

Program się kompiluje poprawnie... uruchamiam go, wpisuje END i program się nie kończy... i wyświetla się, że wpisałem napis END (odpowiada za to instrukcja else)...

Pomoże ktoś... i ewentualnie poprawi inne błędy jeśli są jakieś? ;]

Pozdrawiam i wesołych świąt ;]

1

C-stringi porównuje sie za pomocą strcmp() a nie operatora ==

0

sprawdzenie czy dwie zmienne zawierają ten sam tekst musi odbywac sie za pomoca osobnej funkcji np strcmp(), stricmp(), strncmp() oraz strnicmp()

0

Lub własnej funkcji, gdy masz jakieś własne "ale":)

Dlaczego nie ==? Bo string to char*, czyli wskaźnik. Porównujesz w ten sposób dwa wskaźniki. porównanie te będzie prawdziwe tylko wtedy, gdy po obu stronach będzie ten sam adres (adres pierwszego znaku), a używając " tworzysz nową tablice.

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