P
Deine Funktion ausgeben hat einen Fehler, sie gibt jedes Stringstück das aus Zeichen besteht, nicht nur das erste und das letzte wort.
Ich habe dir mal meine Lösung hier dazu gestellt.
Die Ausgaben in den while Schleifen dienen nur dem debuggen, sie sollten auskommentiert sein wenn die Funktion benutzt wird.
Das erste und letzte Wort findest du in den beiden Strings FirstWord, Lastword;
? was soll die Funktion alpha den machen ??
int ausgeben(char *Buffer,char *First, char *Last);
{
#define STRINGLEN 256
char Buffer[STRINGLEN+1];// das +1 ist eine Marotte
// von mir um den üblichen Fehler zu vermeiden das für
// die schließende Null kein Platz mehr da ist.
char FirstWord[STRINGLEN+1];
char LastWord[STRINGLEN+1];
printf("Bitte geben Sie nun einen Text ein:\n"); /* Eingabeaufforderung */
gets(Buffer); /* liest alles ein */
ausgeben(Buffer,FirstWord,LastWord);
printf ("\nErgebnis: Erstes Word: %s, Letztes Wort: %s",FirstWord,LastWord);
}
int ausgeben(char *Buffer,char *First, char *Last)
{
int i=0; // Index in Eingabestring
int j=0; // Hilfsvariable
First[0]=0x00; //Die beiden Ausgabestrings als leer definieren
Last[0]=0x00;
while (0!=Buffer[i]) // Finde erstes Wort
{
if (0!=isalpha(Buffer[i]))
{
printf("%c",Buffer[i]); // for debugging only
First[j]=Buffer[i];
j++;
i++;
}
else
break;
}
First[j]=0x00; // Schreiben des Stringendes
j=0;
while (0!=Buffer[i])
{
if (0!=isalpha(Buffer[i]))
{
printf("%c",Buffer[i]); // for debugging only
Last[j]=Buffer[i]; // Kopiere in den String Last
j++;
i++;
}
else
{ // Noch ein Trennzeichen gefunden.
// Wenn das letzte Zeichen in einem String ein Trennzeichen ist
// Ist Last leer
i++; // Gehe zum nächsten Zeichen in der Eingabe
j=0; // Setze den Index für Last zurück
}
}
Last[j]=0x00;// Schreiben des Stringendes
return PASS;
}