www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik string terminieren in C


Autor: samuel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: OldBug (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ähm?

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

Autor: samuel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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;

Autor: Rufus T. Firefly (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: OldBug (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: samuel (Gast)
Datum:

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

Autor: OldBug (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: samuel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
danke....ich hatte noch tabs in der Tabelle...jetzt funktioniert das...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.