Array durchsuchen



  • Hallo,

    ich habe mir eine kleine Suche programmiert:

    while(j<buch) {
        if (strstr(buchTitel[j], suche[0]) || strstr(buchName[j], suche[0]) || 
            strstr(buchISBN[j], suche[0])) {
          printf("Ausgabe");
        } else {
          printf("Die Suche ergab folgendes Ergebnis:\n\n");
          printf("Nummer:\t\t%d\nTitel:\t\t%s",buchNr[j],buchTitel[j]);
          printf("Autor:\t\t%sISBN:\t\t%s\n",buchName[j],buchISBN[j]);
          z = 1;
        }
        j++;
      }
      if(z == 0) {
        printf("Die Suche ergab kein Ergebnis.\n\n");
      }
    

    Er gibt mir jedoch immer alle Arrays aus.
    Warum?



  • ich geh mal davon aus, dass die variablen und vergleiche offensichtlich sind: er wird dir das gesamte array ausgeben, bis auf das ergebnis der suche. deine verzweigung (if-else) ist genau falschrum.



  • Ok, er gibt aber auch nicht Ausgabe aus.
    Weiß jemand, wenn str(String1,String2) true ist, was dort passiert?
    Also ob es heißt, ja es wurde etwas gefunden, oder nein, es wurde nichts gefunden.



  • Weil, wenn ich es andersrum mache, dann gibt er Ausgabe aus.



  • man: strstr gibt die Position zurück, an der der Suchbegriff gefunden wurde - NULL (äquivalent zu false) bedeutet "nicht gefunden".

    PS: Da wir hier im C++-Board sind, probier's lieber mit C++-Methoden (=std::string) 😉


Anmelden zum Antworten