letztes zeichen in einem string ermitteln



  • Haette da noch ne Frage.

    Der User gibt einen String ein
    Bsp.ikhohgpougevo

    Wie kann ich nun das letzte Zeichen des Strings ermitteln?
    Also in dem Fall das o



  • str[strlen(str)-1]
    

    (strlen() bestimmt die Länge des Strings, mit str[länge-1] kommst du zum letzten Zeichen)



  • hmm

    wenn ich aber nunr nen string mit 80 char definier

    die eingabe in de string einles, sind ja die zeichen bis auf das letzt leer
    das vorletzte ist ja dann ein leerzeichen.

    moechte aber das letzte zeichen, die leerzeichen hinten nicht, oder kann ich irgenwie den string ab den leerzeichen abschneiden?



  • Die meisten Eingabefunktionen (und alles, was in Standard-C mit Strings arbeitet) setzen an das tatsächliche Ende des Strings ein '\0'-Zeichen als Ende-Markierung - und strlen() zählt auch nur bis zu dieser Markierung:

    char str[80]="Hallo, Nachbar.";//enthält 'H','a',...'r','.','\0'
    printf("Länge:%d\n",strlen(str));//-> Ausgabe 15
    printf("Größe:%d\n",sizeof(str));//-> Ausgabe 80
    printf("letzte:%c",str[strlen(str)-1]);//-> Ausgabe .
    


  • muell geschrieben -.-

    also das was ich meinte war:

    ich les die eingabe in einen string mit 80 char ein

    ist die eingabe nun: ivgiogiougi
    ist ja hinter dem i alles mit leerzeichen gefuellt, bis auf das letzte zeichen halt wieder

    wie ermittle ich nun das i
    wobei die eingabe natuerlich variabel sein kann

    bei str[strlen(str)-1] muesste ich ja dann ein lerzeichen erhalten.



  • funktioniert, danke



  • ok, muss doch nochmal wiederrufen

    printf("\nLast:%c",inputline[strlen(inputline)-1]);

    Ausgabe Last:

    inputline ist hierbei mein strin aus 89char dem ich mit
    fgets(inputline,80,stdin);
    die eingabe zuweis

    also scheinr er doch dann das 79ste zeichen auszugeben, was ein leerzeichen ist



  • boogiegirl schrieb:

    ok, muss doch nochmal wiederrufen

    printf("\nLast:%c",inputline[strlen(inputline)-1]);

    Ausgabe Last:

    inputline ist hierbei mein strin aus 89char dem ich mit
    fgets(inputline,80,stdin);
    die eingabe zuweis

    also scheinr er doch dann das 79ste zeichen auszugeben, was ein leerzeichen ist

    Nein, er gibt einen Zeilenumbruch aus, da fgets() am Ende der Eingabe einen Zeilenumbruch (\n) anfügt.



  • mit der funktion solltest du die umbrueche am ende von strings gut wegschneiden koennen.

    int rtrim(char *str)
    {
    	int i = strlen(str);
    	if (i > 0)
    		while (i-- && (str[i] == '\n' || str[i] == '\r'))
    			str[i] = 0;
    	return 0;
    }
    

Anmelden zum Antworten