string terminieren in C

Gast #132195
Lesenswert?

Also, ich lege den string in der Tabelle ab.
dann greif ich mit: comm_tab[].name auf die elemente zu.
danach steht ja nachdem auf welche Zeile ich zugreife z.B
\011parameter1\011 in comm_tab[].name drin



 comm_struct comm_tab[] = {      // command table
{"parameter1",TYPS16,&parameter1},
{"parameter2",TYPS16,&parameter2},

};


typedef struct{
  char *name;
  u08 type;
  void *ptr;

}comm_struct;
Gast #132196
Lesenswert?

\011 ist die Oktaldarstellung von 9 (dezimal).
Das ist ein Tabulator.
Der versteckt sich in Deinem Sourcecode wohl hinter resp. vor den
Anführungszeichen Deiner Strings.

Du solltest vielleicht einen anderen Editor verwenden oder aber in
Deinem die Darstellung von Tabs und anderen Sonderzeichen aktivieren
(wenn er das denn kann).


Was für einen beknackten Debugger benutzt Du, der noch Oktaldarstellung
verwendet?
Gast #132199
Lesenswert?

Na gut, dann mach ichs wohl doch nochmal:

--8<--
#include <stdlib.h>
#include <stdio.h>

typedef signed short s16;

typedef struct
ptrlist_s
{
        unsigned char *name;
  unsigned int type;
        void *ptr;
} ptrlist_t;

ptrlist_t comm_tab[] = {
          {"parameter1", 0x01, NULL},
          {"parameter2", 0x02, NULL} };

int
main(void)
{
        s16 val[128] = {0xAA};
        int i = 0;

        for(i = 0; i < 2; i++)
        {
                comm_tab[i].ptr = &val[i];
                printf("%d: name [%s], ptr @%p, content = 0x%02X\n",

                       i,
                       comm_tab[i].name,
                       comm_tab[i].ptr,
                       *(s16 *)comm_tab[i].ptr);
        }

        return 0;
}
-->8--

Das liefert folgendes Ergebnis:

0: name [parameter1], ptr @0022FE58, content = 0xAA
1: name [parameter2], ptr @0022FE5A, content = 0x00

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren