erbitte hilfe bei einem einfachen code, der zeichen in einem string zählen soll.



  • hallo,
    ich bin ziemlicher anfänger im ungang mit c, also nicht wundern über die vermeitlich blöde frage. Bei dem code, in dem einfach die anzahl eines bestimmten zeichens gezählt werden soll wird mir immer null als summe ausgegeben.
    kann mir einer helfen?
    gruß...

    void main(void)
    {
    int zeichen, anzahl_zeichen=10,summe=0,i;
    char string[10]= "hallo";
    printf("gib das zu suchende Zeichen ein! = ");
    scanf("%d", & zeichen);
    for (i=0 ; i<anzahl_zeichen ;i=i+1)
    if (string[i]==zeichen)
    {summe=summe+1 ;}
    printf("Die summe ist: %1d", summe);
    NEUEZEILE;

    }



  • Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C++ (auch C++0x) in das Forum C (C89 und C99) verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • zeichen sollte wahrscheinlich vom Typ char sein und mit scanf("%c", &zeichen) eingelesen werden. Sonst schlägt die Eingabe fehl und in zeichen steht irgendwas mehr oder weniger zufälliges, was in deinem String wahrscheinlich nicht vorkommt.
    Zu dem Stil sag ich jetzt mal nichts ...


  • Mod

    1. C++ ist nicht C, ich verschiebe den Thread mal.
    2. Benutze für Code bitte die entsprechenden Tags (unter dem Editorfenster, unter den Smileys), dann sieht das nämlich so aus:

    void main(void)
    {
      int zeichen, anzahl_zeichen=10,summe=0,i;
      char string[10]= "hallo";
      printf("gib das zu suchende Zeichen ein! = ");
      scanf("%d", & zeichen);
      for (i=0 ; i<anzahl_zeichen ;i=i+1)
        if (string[i]==zeichen)
          {summe=summe+1 ;}
      printf("Die summe ist: %1d", summe);
      NEUEZEILE;
    
    }
    

    3. Jetzt, da man es lesen kann und es auch die richtigen Leute lesen, bekommst du bestimmt bald eine Antwort, möglicherweise von mir in ein paar Minuten.

    edit: Oder du bekommst deine Antwort, bevor ich überhaupt mit diesem Beitrag fertig bin, so schnell geht das :p

    edit2: Da sind übrigens noch mehr Fehler drin: Dein anzahl_zeichen geht über dein "hallo" mit seinen 5 Zeichen hinaus. Der Speicher gehört zwar dir und deshalb bekommst du keinen segfault, aber was an der Stelle steht ist undefiniert und somit auch das Ergebnis deines Programms.



  • #include <stdio.h>
    #include <string.h>
    
    int main()
    {
    	char zeichen;
    
    	char str[]= "hallo"; 
    
    	int anzahl, summe = 0;
    
    	int i;
    
    	printf("Gib das zu suchende Zeichen ein: ");
    	scanf("%c", &zeichen); 
    
    	anzahl = strlen(str);
    
    	for (i = 0; i < anzahl; ++i)
    	{
    		if (str[i] == zeichen)
    		{
    			++summe;
    		}
    	}
    
    	printf("Die Summe ist: %d\n", summe);
    
    	return 0;
    }
    


  • läuft...danke,
    werd die angesprochenen tipps beherzigen!


Anmelden zum Antworten