Funktion strcomp schreiben !!!!



  • hallo zusammen ich brauche hilfe bei c programierung
    ich hoffe hier könnt mir noch heute helfen

    Aufgabe:

    Schreiben sie eine Funktion strcomp zum vergleich zweier Zeichen Ketten ! Rückgabe wert soll sein:;

    0 fall zeichen ketten identisch
    1 fall zeichen ketten nicht identisch, aber gleich lang
    -1 fall zeichen ketten unterschidlisch lang

    ich freue mich wenn ihr mir lösungs vorschläge gibt.

    ihr könnt mir auch e mail schicken an sonstiges@post.com

    warte

    mfg



  • Na das solte aber nicht allzu schwer sein:

    Einfach eine for schleife, die mit einer Laufvariablen durchläuft und abbricht, sobald eine Zeichenkette aus ist.

    Du setzt die Laufvar. einfach als Index bei den beiden Arrays ein, und fragst immer ab ob die beiden Arrays an der jeweiligen Stelle gleich sind.

    Und dann gibst du einfach mit return den Wert zurück, der angibt, ob die beiden Arrays gleich sind.

    Achja, nochwas: 2mal musst du den Beitrag auch nicht posten, und noch dazu unter verschiedenen Benutzernamen...

    Grüße,
    Harri



  • /* Erste Version */
    int strcomp( const char *pS1, const char *pS2 )
    {
      if ( strlen( pS1 ) != strlen( pS2 ) )
        return -1;
      if ( strcmp( pS1, pS2 ) )
        return 1;
      else
        return 0;
    };
    
    /* Zweite Version */
    int strcomp( const char *pS1, const char *pS2 )
    {
      int i = 0;
      int iRes = 0;
    
      while ( pS1[i] && pS2[i] )
      {
        if ( pS1[i] != pS2[i] )
          iRes = 1; 
        i++;
      };
      if ( pS1[i] != pS2[i] )
        return -1;
      return iRes;  
    };
    

    PS: Habe es nicht getestet. Sollte aber funktionieren.



  • hi erstaml danke

    könntes du mir es also code schreiben
    bitte !
    bin anfänger
    sorry !!

    s..z.

    warte



  • danke erst mal für den code

    aber ich soll den ganzen strcomp funktion selber schreiben.

    Wie?

    ohne strcomp zu benutzen

    warte auf antwort



  • info schrieb:

    Schreiben sie eine Funktion strcomp zum vergleich zweier Zeichen Ketten !

    Na, da war aber jemand mächtig kreativ. 🙂
    Schau dir mal eine Implementierung von strcmp an, die Funktion macht nämlich genau das gleiche. Lediglich den Rückgabewert musst du noch anpassen.



  • @hallo22, info2, info...auch wenn du nicht registriert bist, wäre es nett wenn du immer den gleichen Namen verwenden würdest. Man kommt sonst zu schnell durcheinander 🙂



  • ok nur das klappte nicht mit den gleichen namen ,
    deshalb habe ich es so gemacht

    sorry.

    kannst du mir bei der lösung helfen bitte



  • Wo hängts denn noch? Es wurden doch schon einige Tipps gegeben.



  • ok nur die Lösung benutzt ja das strcomp

    war mir zu einfach !
    ist egal trotzdem danke für alle
    reicht auch glaube ich
    am anfang hatte ich auch verständiss probleme
    ok

    nur wenn ich

    die ausgabe fäll also ausgeben will mit printf z.B 0 wort ist identisch u.s.w. wie muss ich es den machen

    kann sein das version 1 fehler hat

    weil wenn ich in main program die namen ein setze
    das pS1 ist ok aber pS2 steht was anderes ....

    woran kann es liegen

    hier der Pro -code

    /* Erste Version */
    int strcmp( const char *pS1, const char *pS2 ) ;

    int strcmp( const char *pS1, const char *pS2 )
    {
    if ( strlen( pS1 ) != strlen( pS2 ) )
    return -1;
    if ( strcmp( pS1, pS2 ) )
    return 1;
    else
    return 0;
    };

    void main(void)
    {
    int ergebnis;
    char* pS1 ="otto";
    char* pS2 ="otto";
    ergebnis = strcmp(pS1,pS2);

    printf("Wert ist %i",ergebnis);

    }



  • Wieso nimmst du nicht Hermann's zweite Version. Ich glaube die Aufgabe geht vielmehr in diese Richtung. Hier nochmal eine überarbeitete Version

    int strcomp(const char* s1, const char* s2)
    {
        int rval = 0;
        size_t i = 0;
        while (s1[i] != '\0' && s2[i] != '\0')
        {
            if (s1[i] != s2[i])
                rval = 1;
            ++i;
        }
        if (s1[i] != s2[i])
            return -1;
        return rval;
    }
    

Anmelden zum Antworten