Buchstaben in einer For-Schleife durchgehen?



  • Hallo,

    ich möchte Buchstaben in einer For-Schleife durchgehen.

    Beispiel:
    """""""""
    for(i=A; i!=Z; i++)
    {
    }

    Also sprich den Buchstaben inkrementieren.

    Gibt es da eine Möglichkeit oder muss ich zuvor alle 26 Buchstaben
    in einem Array durchgehen und die Schleife für jedes Array_Element
    durchlaufen?

    Wäre für Beispiele beider Varianten(Buchstaben inkrement und Array)
    sehr dankbar.

    Grüße

    Arndt



  • sowas?

    char i;
     for (i='A'; i<='Z'; i++)
          putchar (i);
    
    char *a = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
      while (*a)
          putchar (*a++);
    


  • BTW: bin mir nicht absolut sicher, aber ich glaube der Ansi Standard legt für die Reihenfolge der Buchstaben nichts fest - daher könnte dabei auch mist rauskommen - nur für die Zeichen 0 bis 9 ist festgelegt, dass sie hintereinander folgen müssen.... mmmh...



  • Vertexwahn schrieb:

    BTW: bin mir nicht absolut sicher, aber ich glaube der Ansi Standard legt für die Reihenfolge der Buchstaben nichts fest - daher könnte dabei auch mist rauskommen - nur für die Zeichen 0 bis 9 ist festgelegt, dass sie hintereinander folgen müssen.... mmmh...

    na, wenn das stimmt, dann besser alles nur mit arrays machen



  • C99 schrieb:

    The representation of each member of the source and execution basic
    character sets shall fit in a byte. In both the source and execution basic character sets, the value of each character after 0 in the above list of decimal digits shall be one greater than the value of the previous.



  • Du kannst das Wort in eine Funktion überschreiben und dann kannste schön ordentlich in einer Funktion das Wort durchgehen:

    for (i = 0; *s == *t; i++, s++, t++)
      {
        if (*s == '\0')
        {
          return 0;
        }
      }
    

    Hier hatte ich zwei Worte miteinander Zeichen für Zeichen verglichen. Vielleicht hilft dir das etwas !



  • cHillb3rT schrieb:

    Hier hatte ich zwei Worte miteinander Zeichen für Zeichen verglichen.

    da fehlt wohl was...



  • erscheint auch nicht sinnvoll, das du ein i erhöhst.



  • Danke für eure Unterstützung, das mit der Schleife funktioniert einwandfrei.
    Jetzt habe ich noch ein Problem mit der GetDriveType-Funktion.

    Jedesmal, wenn ich den Source compilieren will bringt er mir bei
    GetDriveType "Missing Prototype". Könnt Ihr mir sagen, wo mein Fehler
    liegt? Hier meine Funktion.

    char GetCurWD()
    {
    char aktWD_g;
    char Drive;
    int anzWD;
    unsigned int drivetype;

    for (Drive='A'; Drive<='Z'; Drive++)
    {

    char DriveChar[4];
    *DriveChar=Drive;
    *(DriveChar+1)=':';
    *(DriveChar+2)='\';
    *(DriveChar+3)='\0';

    drivetype = GetDriveType(Drive);

    if(drivetype == 2)
    {
    anzWD++;

    //if(Datenträger beschreibbar)
    //{
    //Speicherung des aktuellen Laufwerkes in einem Array
    //} else {
    //Speicherung der nicht beschreibbaren Laufwerke in einem Array
    //}

    }
    }
    return aktWD_g;
    }

    Grüße

    Arndt



  • mata schrieb:

    erscheint auch nicht sinnvoll, das du ein i erhöhst.

    Hatte nur in Bezug auf das Programm, in dem der Quellcodeteil steckte Sinn !



  • Das komplette Programm darf ich hier nicht veröffentlichen.

    Könnt Ihr mir Beispiele für die Verwendung der GetDriveType Funktion
    geben? Habe beim googeln nicht die besten Ergebnisse gefunden.

    Was bedeutet die Fehlermeldung des Compilers "Missing Prototype"?

    Grüße

    Arndt



  • Könnte die fehlende Prototyp-Kopfzeile sein, die du nicht am Anfang vor der main-Funktion nochnmal angegeben hast.

    Schreib den Funktionskopf da einfach nochmal hin !



  • Hallo,

    jetzt habe ich noch ein Problem mit dem Übergabeparameter der Funktion GetDriveType. Der Kompiler sagt: 1. Konvertierung von 'int' nach 'const char' nicht möglich, 2. Keine Übereinstimmung des Typs beim Parameter
    'IpRootPathName' ('const char *' erwartet, 'char' erhalten)

    char GetCurWD()
    {
    // Variablen
    char aktWD_g;
    int anzWD;
    int writableWD;
    int nonwritableWD;
    unsigned int drivetype;
    char Drive;

    // Ausblenden der Windows-Fehlermeldungen
    SetErrorMode(SEM_FAILCRITICALERRORS);

    // Scannen der Wechseldatenträger
    for (Drive='A'; Drive<='Z'; Drive++)
    {
    char Drive = Drive && ":" && "\" && "\0";
    drivetype = GetDriveType(Drive);

    if(drivetype == 2)
    {
    ...
    }
    }
    }

    Grüße

    Arndt



  • 1. Codetags benutzen
    2. Im MSDN hast du doch die Erklärung der Funktion schon. Du sollst eben keinen char übergeben, sondern einen String. Und Strings werden idR. halt als char* übergeben 😉

    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/base/getdrivetype.asp



  • Hi,

    habe versucht die Codetags zu benutzen, der Code wurde aber nicht anderst dargestellt.

    Quellcode
    

    habe ich getestet.
    Anderer Aufbau?

    Kannst du mir noch eine Beispielübergabe an die Funktion GetDriveType geben?
    Bin noch neu auf dem Gebiet.

    Grüße

    Arndt



  • Wenn ich das Ganze so

    char *Drive = Drive && ":" && "\\" && "\0";
    drivetype = GetDriveType(Drive);
    

    versuche sagt der Kompiler
    Konvertierung von bool nach char * nicht möglich.

    Habe wohl den String falsch zusammengekettet, oder?
    Wie kann ich einen String zusammenketten?

    Grüße

    Arndt



  • ok, funzt jetzt.

    Danke euch alle für eure Hilfe.

    Grüße

    Arndt


Anmelden zum Antworten