Funktion strcomp schreiben !!!!
-
hallo zusammen ich brauche hilfe bei c programierung
ich hoffe hier könnt mir noch heute helfenAufgabe:
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 langich 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 gemachtsorry.
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
oknur 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; }