[gelöst]Anzahl Buchstaben im String



  • Ja hab ein Problem...

    Mein Programm bis jetzt sieht wie folgt aus (ja es fehlt noch einiges, aber für das jetzige Problem - irrelevant):

    #include <stdlib.h>  
    #include <stdio.h>  
    
    #define ANZAHL 256
    
    int main() 
    {
    
          // VARIABLEN (Lokal) 
          char Auswahl;
          char Zeichenkette[ANZAHL];
          int i; //Schleifenvariable
    
          do {
          // Intro
             printf("\n"); 
             printf("\nZeichenketten analysieren\n\n");
             printf("Waehlen Sie Bitte aus:\n\n\n");
    
          // Eingabe
             printf("\tZeichenkette eingeben      E\n");
             printf("\tLaenge der Zeichenkette    L\n");
             printf("\tUmgekehrt darstellen       U\n");
             printf("\tAnzahl Grossbuchstaben     G\n\n");
             printf("\tProgramm schliessen        S");
    
             Auswahl = getch();
          // Verarbeitung
             switch (Auswahl) {
                    case 'E':
                    case 'e': 
                              system("cls");
                              printf("Geben Sie Bitte ihre gewuenschte Zeichenfolge ein");  
                              printf(" und bestaetigen Sie mit Enter\n\n");
                              printf("Ihre Eingabe: ");
                              fgets(Zeichenkette, ANZAHL, stdin);
                              system("cls");                                             
                              break;
    
                    case 'L':
                    case 'l': 
                              system("cls");
                              int Anzahl = 0;
                              for(i=0;i<=256;i++){
                                     if(Zeichenkette[i]==""){
                                            printf("Laenge der Zeichenkette: %d", Anzahl);
                                            }                                       
                                     else{  
                                            Anzahl++;
                                            }
                              }
                              break;
                    case 'S':
                    case 's': 
                              return (0);
                              break;
                    default:  break;                      
             } 
             }while(Auswahl==Auswahl);
    
          // Ausgabe
    
       system ("PAUSE"); /* Nur während der Entwicklungsphase, später löschen! */
       return (0);
    }
    

    Wie ihr seht, wird bei der Switch Anweisung - nach dem man auf "E" oder eben "e" drückt der String eingelesen und in das Array Zeichenkette[ANZAHL] gespeichert... Bei der eingabe von "L" für Länge - sollte jetzt die Länge des Strings, also aller Zeichen berechnet werden (ich wills nicht mit der schon vorhandenen Bibliothek machen) -> Mein Ansatz siehe im Code (oder oben)::

    case 'L':
                    case 'l': 
                              system("cls");
                              int Anzahl = 0;
                              for(i=0;i<=256;i++){
                                     if(Zeichenkette[i]==""){
                                            printf("Laenge der Zeichenkette: %d", Anzahl);
                                            }                                       
                                     else{  
                                            Anzahl++;
                                            }
                              }
                              break;
    

    Wieso geht das nicht?= Eine Warnung erscheint "Compariosn between pointer and integer", was kann ich machen? Der Algorithmus stimmt so oder?

    Vielleicht sollte ich noch erwähnen, dass ich seit kurzem erst mit C Programmiere 🙂

    MfG



  • So sieht der Prototype für die strlen-Funktion aus. Sie ermittelt die Länge eines Strings. Musst noch die "string.h" einbinden.

    strlen(const char *str);
    


  • Länge eines Strings ohne strlen() ermitteln: http://www.c-plusplus.net/forum/254077



  • alogheo schrieb:

    Länge eines Strings ohne strlen() ermitteln: http://www.c-plusplus.net/forum/254077

    Schöne Idee 🙂

    Der Threadersteller wollte auf dies hinaus denke ich, die Methode aus alogeos Thread sollte aber bevorzugt werden.

    case 'L':
                    case 'l':
                              system("cls");
                              int Anzahl = 0;
                              for(i=0;i<ANZAHL;i++){ // ANZAHL als Abbruchbedingung
                                     if(Zeichenkette[i] == '\0') { // mit char vergleichen
                                            printf("Laenge der Zeichenkette: %d", Anzahl-1); // -1
                                            break; // hier rausbreaken
                                            }
                                     else{
                                            Anzahl++;
                                            }
                              }
                              break;
    


  • vielen Dank, für die Antworten, werde es gleich morgen ausprobieren und hier nochmals posten MfG und ja, ich wollte es ohne strlen lösen 🙂



  • Hat geklappt, thx


Anmelden zum Antworten