Zeichen in einem String ausgeben



  • #include <stdio.h>
    #include <stdlib.h>

    Hi,

    ich versuche grade schon seit ein paar Tagen Zeichen in einem String auszugben und bin mittlerweile eigentlich nur so weit, dass ich weiß, dass man dafür die Funktion "strchr" benutzen kann. In meinem Code gibt er mir aus, dass sich da "zumindest ein" e befindet. Um alle 'e's in dem String zu suchen, müsste man ja eine for-Schleife benutzen, aber wie mache ich das mit strchr?? Finde in keinem Buch ein Beispiel dazu...

    Vielleicht gibt es auch andere Möglichkeiten, ausser strchr? Wäre für eine Antwort sehr, sehr dankbar!

    #include <stdio.h>

    int main()
    {
    char hallo[] = "Hallo Welt. Wie geht es dir?";
    int anzahl = 0;

    if(strchr(hallo, 'e')) {
    anzahl++;
    }

    printf("String enthaelt %d\n", anzahl);

    system("PAUSE");
    return 0;
    }



  • Folgende Seite hast du schon gelesen?
    http://www.cplusplus.com/reference/clibrary/cstring/

    Ignorier C++ nimm die C-Varianten.

    Ist je nach Compiler unterschiedlich - meist solltest du

    #include <string.h>
    

    einbinden um die Stringfunktionen nutzen zu können.
    Oder sollt ihr das ohne string.h lösen?

    MfG f.-th.



  • Du kannst dazu den Rückgabewert von strchr() nehmen. Der zeigt auf das gefundene Zeichen.

    Das einfachst ist aber, du machst selber eine Schleife über den String und zählst mit.



  • Wie wärs mit selbst zählen:

    #include <stdio.h>
    #include <string.h>
    
    int main()
    {
    char hallo[] = "Hallo Welt. Wie geht es dir?";
    int anzahl = 0;
    int index;
    
    for(index = 0; index < strlen(hallo); ++index)
        if(hallo[index] = 'e')
            ++anzahl;
    
    printf("String enthaelt %d\n", anzahl);
    
    system("PAUSE");
    return 0;
    }
    

    Edit: string.h mit aufgenommen



  • Jetzt bitte noch ohne Stringfunktionen wie strlen() .



  • Hallo, danke erstmal für die Antworten.

    Doch, klar, das string.h hab ich vergessen, danke.

    @Belli

    Hab das jetzt versucht, aber das Problem ist, er gibt mir 28 Zeichen aus, also die Anzahl aller Zeichen, nicht nur die 'e's.... Kann man das strlen in deinem Code nicht irgendwie durch was anderes ersetzen?



  • Belli hat ein = vergessen 😉



  • Sorry, es muss natürlich:
    if(hallo[index] == 'e')
    heißen.

    @DirkB:
    Warum?



  • Ahhh, ja, jetzt klappts. Cool danke !!

    Und wie siehts aus mit der Beachtung von Groß- und Kleinschreibung? Wenn man jetzt Großbuchstaben suchen will, muss man da einfach 'E' statt 'e' eingeben? Und wenn man beides gleichzeitig sucht, dann 'E' || 'e' ?



  • Gast12345678 schrieb:

    Und wie siehts aus mit der Beachtung von Groß- und Kleinschreibung? Wenn man jetzt Großbuchstaben suchen will, muss man da einfach 'E' statt 'e' eingeben?

    Sowas eignet sich hervorragend dafür, es mal selbst auszuprobieren ...

    Gast12345678 schrieb:

    Und wenn man beides gleichzeitig sucht, dann 'E' || 'e' ?

    if( ... == 'e' || ... == 'E')



  • Nicht ganz

    if((hallo[index] == 'e') || (hallo[index] == 'E'))
    

    oder

    #include <ctype.h>
    ...
    if(tolower(hallo[index]) == 'e')
    


  • @Belli

    Ja stimmt, hast Recht, habs jetzt ausprobiert. Es funktioniert. Also danke nochmal, hat mir sehr geholfen!


Anmelden zum Antworten