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/StrcmpWäre in Anbetracht des letzteren vielleicht angebracht, den Professor aufs Korn zu nehmen.