- Registriert
- 29.10.09
- Beiträge
- 31
Hallo zusammen,
ich hab ein kleines Problem was einen Vergleich zweier Strings in C angeht. Unsere Aufgabe ist es die Stringcompare-Funktion selbst zu schreiben, als Teilfunktion eines größeren Programmes.
Mein bisheriger Lösungsansatz schaut so aus:
Ich lese also erst die beiden Strings s und q über ihre Zeiger ein, schließe den String mit einem '\0' nach der Schleife ab und setze die Zeiger dann wieder auf den Anfang ihrer Felder und kontrolliere in einer weiteren while-Schleife, ob der Inhalt der beiden Zeiger gleich ist. Die Stelle von gleichen Stellen gebe ich über printf mit Hilfe der integer-Variable "position" aus. Das passiert dann solange der erste String noch nicht zu Ende ist (!='\n').
Mein Problem ist nun leider, dass er mir bei jeder Position eine Gleichheit ausgibt. Fällt jemandem auf was ich verkehrt mache? Möglicherweise kann man Felder garnicht auf diese Art und Weise miteinander vergleichen, dann vergebt mir mein Halbwissen^^
Danke für jegliche Hilfe im Voraus!
Gruß
MarCus
Edit: "fpurge(stdin)" sorgt auf meinem Macbook für die Löschung des bisherigen Eingabepuffers
ich hab ein kleines Problem was einen Vergleich zweier Strings in C angeht. Unsere Aufgabe ist es die Stringcompare-Funktion selbst zu schreiben, als Teilfunktion eines größeren Programmes.
Mein bisheriger Lösungsansatz schaut so aus:
Code:
int pos(void)
{
char s[100], q[100], *ps,*pq;
ps=&s[0];
pq=&q[0];
int position=0;
printf("Bitte einen String eingeben: ");
fpurge(stdin);
while (((*ps)=getchar())!='\n')
{
ps++;
}
*ps='\0';
ps=&s[0];
printf("Bitte einen weiteren String eingeben: ");
fpurge(stdin);
while (((*pq)=getchar())!='\n')
{
pq++;
}
*pq='\0';
pq=&q[0];
while ((*ps)!='\n')
{
if ((*pq)==(*ps))
{
position++;
printf("\nGleichheit bei Position %d",position);
pq++;
}
ps++;
}
return 0;
}
Ich lese also erst die beiden Strings s und q über ihre Zeiger ein, schließe den String mit einem '\0' nach der Schleife ab und setze die Zeiger dann wieder auf den Anfang ihrer Felder und kontrolliere in einer weiteren while-Schleife, ob der Inhalt der beiden Zeiger gleich ist. Die Stelle von gleichen Stellen gebe ich über printf mit Hilfe der integer-Variable "position" aus. Das passiert dann solange der erste String noch nicht zu Ende ist (!='\n').
Mein Problem ist nun leider, dass er mir bei jeder Position eine Gleichheit ausgibt. Fällt jemandem auf was ich verkehrt mache? Möglicherweise kann man Felder garnicht auf diese Art und Weise miteinander vergleichen, dann vergebt mir mein Halbwissen^^
Danke für jegliche Hilfe im Voraus!
Gruß
MarCus
Edit: "fpurge(stdin)" sorgt auf meinem Macbook für die Löschung des bisherigen Eingabepuffers
Zuletzt bearbeitet: