funktion wie strcmp schreiben



  • Hallo Leute

    ich habe eine aufgabe bekommen bei der ich ein programm schreiben musste in der ich eine funktion schreibe die wie strcmp funktioniert nur das ich sie selber schreiben muss. falls die strings gleich sind muss ein text ausgegeben werden bei dem steht das die strings gleich sind sonst ungleich:
    hier der code:

    //Programm das die Länge der strings ermittelt
    //Ljatifi Denat
    //25.06.09
    
    #include <stdio.h>
    
    /* Funktion bei der die länge ermittelt wird*/
    int strcompare(char *f1, char *f2) 
    {
    
     int i=0; //Zaehlvariable
     int j=0; //Zaehlvariable
    
    	int erg1=0;
     int erg2=0;
    
    //Schleife damit die zeiger durchlaufen werden
     for(int z=0; f1[z]&&f2[z]!='\0';z++) 
    
     {
            erg1=erg1+f1[i];
            erg2=erg2+f2[j];
    
    	if(f1[i]!='\0')        //Ueberpruefung wie groß der zeiger ist
    
        {
              i++;
        }
    
       if(f2[j]!='\0')
       {
             j++;
    
       }
     }
    
    if(erg1>erg2||erg1<erg2)			  //Überprüfung ob erg1 größer ist 
    						//dann wird 1 zurückgegeben
    	return 1;                
    
     else
    	return 0; 
    						//sonst wird 0 zurückgegeben
    }
    
    int main()
    {
     char feld1[20];        //erstes Feld
     char feld2[20];        //zweites Feld
     int erg;                //Variable für das ergebnis
     char *f1[20];            //Zeiger auf das erste feld
     char *f2[20];            //Zeiger auf das zweite feld
    
     printf("Bitte geben sie 2 strings ein die verglichen werden sollen\n");
    
     gets(feld1);                 //Eingabe der Strings
     gets(feld2);
    
     *f1=feld1;   //Zuweisung der Werte für die Zeiger
     *f2=feld2;
    
     erg=strcompare(feld1,feld2); //Funktionsaufruf 
    
     printf("\nDie Strings sind...: ");
    
     if(erg==0)
    	 printf("gleich\n");
     else
    	 printf("ungleich\n");
    
       return 0;
    
    }
    

    was haltet ihr von dem programm is es richtig?
    ich habs absichtlich mit zeiger gemacht!

    thanks!



  • etwas umständlich würd' ich sagen. probier doch mal sowas in der art:

    int strcompare (char *f1, char *f2)
    {
      while (*f1 != 0 && *f1 == *f2)    // vergleichen, solange beide gleich sind oder der erste zueende ist
      {
        f1++;
        f2++;
      }
      if (*f1 == 0 && *f2 == 0)
        return 1;     // auch beide gleich lang -> passt 
    
      return 0; // entweder unterschiedlich lang oder zeichen falsch 
    }
    

    ^^ungetestet
    🙂



  • int strcompare(char const *f1, char const *f2) {
      while (*f1 == *f2) {
        if(*f1 == '\0')
          return 0;
        ++f1;
        ++f2;
      }
      return *f1 - *f2;
    }
    


  • Und noch ein paar Links:
    http://www.vbforums.com/showthread.php?t=130410
    http://en.wikipedia.org/wiki/Strcmp

    Wäre in Anbetracht des letzteren vielleicht angebracht, den Professor aufs Korn zu nehmen.


Anmelden zum Antworten