String array Umsetzung von Pascal nach C



  • Hallo
    Freunde des "C"

    Wie mache ich so was in "C"

    in Pascal

    type
    tS = string[10];
    var
    S : Array[0..5] of tS;
    

    Ich habe es mal so probiert nur das geht garnicht

    typedef unsigned char tStrBuffer[8];
    tStrBuffer StrBuffer[3];
    

    mal abgesehen von den werten 🤡



  • int main()
    {
      typedef char string8_t[8];
      typedef string8_t array3_string8_t[3];
    
      array3_string8_t test;
    
      char x = test[0][0];
    
      return 0;
    }
    

    mit VStudio 2010, Clang gehts



  • Hallo
    Ich komme damit leider nicht klar

    strcpy(test[0][0] , 'Hallo');
       strcpy(test[1][0] , 'Martin');
    

    ist der Compiler nicht entzückt.



  • Wenn du dich auf die Definitionen von Gast3 beziehst:

    test[0][0] ist ein Zeichen, kein String
    test[0] ist der String

    In C werden Strings zwischen doppleten Hochkommata eingeschlossen.
    Einfach Hochkommas sind für einzelne Zeichen.

    strcpy(test[1], "Martin");
    

    und der Compiler ist zufrieden.



  • Entschuldigung das ich nerve
    Erst mal Danke für die Antwort !
    Das hatte ich natürlich auch schon probiert.
    Ich weiß das der Fehler zwischen den Augen liegt
    abber wo ist er im Code.

    typedef char string8_t[8];
       typedef string8_t array3_string8_t[3];
    
       array3_string8_t test;
    
    void main(void)
    {
    
       strcpy(test[0] , 'Hallo');
       strcpy(test[1] , 'Martin');
    

    Compiler
    error: (226) char const too long



  • In C werden Strings zwischen doppleten Hochkommata eingeschlossen.

    steht im Post davor - wie sehen deine Strings aus?



  • Ganz wichtig in C: 'C' ist etwas anderes als "C"

    'C' ist ein Ganzahlwert. Der hängt von der auf dem System verwendeten Zeichencodierung ab. Nach ASCII ist das 67

    "C" ist ein Stringliteral. Im Speicher besteht es aus 'C' mit darauf folgendem '\0'

    Bei der Angabe zerfällt das "C" in die Adresse von der Speicherstell, an der das 'C' liegt. Es ist somit ein char*



  • Oho Danke
    wieder was gelernt.
    Ich habe das Problem aber anders mit einem struct
    und das dann in ein Array

    typedef struct 
     {
       unsigned char LowValue;
       unsigned char HighValue;
       unsigned char Configuration;
       unsigned int  Value;
     } MCPValue;
    
     MCPValue MCPValues[4];
    

    rechne das um und gebe es mit sprintf aus
    Danke vielmals
    für die netten Antworten.


Log in to reply