Forum: Mikrocontroller und Digitale Elektronik string terminieren in C


von samuel (Gast)


Lesenswert?

Hallo,
in meinem string steht immer "\011parameter1\011", obwohl ich
eigentlich nur "parameter1" reinschreibe, wie kann ich den string
terminieren, damit ich nur "parameter1" stehen habe.
danke

von OldBug (Gast)


Lesenswert?

Ähm?

Irgendwas Stimmt da nicht so ganz, zeig uns doch mal, wie Du den String
erzeugst...

von samuel (Gast)


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;

von Rufus T. Firefly (Gast)


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?

von OldBug (Gast)


Lesenswert?

Ich wollte schon schreiben: "Kann ich nicht nachvollziehen", denn bei
mir ist das alles so korrekt. Aber Rufus Erklärung wäre natürlich noch
drin...

von samuel (Gast)


Lesenswert?

ich benutze Code Composer studio, die Entwicklungsumgebung die von TI
zum Evaluation Board vom TMS320F2812 geliefert wird

von OldBug (Gast)


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

von samuel (Gast)


Lesenswert?

danke....ich hatte noch tabs in der Tabelle...jetzt funktioniert das...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.