C-Programmierung: Aufgaben: Letzten Buchstaben in String finden

Aus Wikibooks

Wechseln zu: Navigation, Suche

[Bearbeiten] Aufgabenstellung

Schreiben Sie eine Funktion, die feststellt, an welcher Stelle einer Zeichenkette ein Buchstabe das letzte Mal vorkommt. Als Parameter für die Funktion soll ein Zeiger auf den Anfang der Zeichenkette und das zu suchende Zeichen übergeben werden. Die Stellennummer, an der das Zeichen das letzte Mal vorkommt, ist der Rückgabewert. Ist das Zeichen nicht vorhanden oder wird ein Nullpointer an die Funktion übergeben, soll der Wert -1 geliefert werden. Testen Sie die Funktion in einem kurzen Hauptprogramm.

[Bearbeiten] Musterlösung

#include <stdio.h>
#define LAENGE 1234
 
int position(char *zeichenkette, char zeichen); // Prototyp der Suchfunktion
 
int main(void)
{
    int position_zeichen,start,c;  //Deklaration der Variablen
    char zeichen, zeichenkette[LAENGE]; 
    printf("Das ist ein Programm zum Vergleich einer Zeichenkette mit einem Zeichen\n");
 
 
    printf("Bitte Zeichenkette mit maximal %d Zeichen eingeben: ",LAENGE-1);
    // Einlesen einer beliebigen Zeichenkette mit Sonderzeichen
    for(start=0;(start<LAENGE-1) && ((c=getchar()) != EOF) &&c!='\n' ;start++)
    {
        zeichenkette[start]=(char)c; 
 
    }
    zeichenkette[start] = '\0'; //Nullbyte an letzter Stelle hinzufügen
 
    if(start==LAENGE-1) //Wenn zu viele Zeichen sind, hier verarbeiten
    {
        while(getchar()!='\n'); // Zeichen solange einlesen bis Enter
    }
 
    printf("Bitte ein Zeichen eingeben:");
 
    scanf("%c",&zeichen);  //Einlesen des gesuchten Zeichens	
 
    position_zeichen = position(zeichenkette,zeichen); //Übergabe des Rückgabewertes aus der Funktion 'position'
 
    if (position_zeichen == -1)	//ist das Zeichen vorhanden?
        printf("Eingegebenes Zeichen ist nicht in der Zeichenkette enthalten!\n");
    else
        // wenn ja, Ausgabe des Suchergebnisses
        printf("Position des letzten %c ist an Stelle: %i\n", zeichen, position_zeichen+1);
 
    position(NULL,zeichen);
    return 0;
}
 
//Funktion zum Suchen des Zeichens
int position(char *zeichenkette, char zeichen)
{
    int back = -1,i;	
 
    if(zeichenkette!=NULL) //Wenn keine Zeichen vorhanden sind, Rückgabe von 0
    {	
        //Schleife zum Durchgehen der Zeichenkette
        for(i = 0; *(zeichenkette+i) != '\0'; i++) 
        {
            printf("An Stelle %4d steht das Zeichen  = %c\n",i+1,*(zeichenkette+i));//Kontrollausgabe der Zeichen mit der zugewiesenen Positionszahl
            // Vergleich der einzelnen Zeichen mit dem gesuchten
            if (*(zeichenkette+i) == zeichen)  
            {
                back = i; //Position des gesuchten Zeichens speichern
            }
        }
    }
    return back;	//Rückgabe der Position des gesuchten Zeichens
}
Persönliche Werkzeuge