www.mikrocontroller.net

Forum: Compiler & IDEs Frage zur verwendung von strncat


Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,
ich bin Anfänger und möchte wissen, ob man strncat mit uint_16t benutzen 
kann?
Überall steht nur: char *strncat(char *s1, const char *s2, size_t)

Danke

Autor: eklige Tunke (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
http://www.lmgtfy.com/?q=strncat -> dritte Fundstelle, noch
besser -> C-Buch...

Autor: Uwe S. (de0508)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo  Oliver,

was meinst Du mit "uint_16t" ?

"size_t" ist eine Typdeklaration und hier '>=' 0.

Die Funktion |strncat(s1,s2,3)| fügt zwei Strings aneinander;
Bsp.:

s1 = "12345";
s2 = "67890";
s3 = strncat(s1, s2, 3);

s3 ist dann "12345678";

Am Ende jeden Strings steht noch ein '\0' das wird richtig kopiert, bzw. 
ans Ende gesetzt.

.

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Falls du den 3. Parameter meinst: ja, da kann man auch uint16_t 
übergeben.
Sonst: nein.

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich meine:

uint_16t strncat(uint_16t s1, uint_16t s2, size_t)

Autor: U.R. Schmitt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist ein uint_16t denn ein String?
Ünerlege Dir mal warum die Variablen von Funktionen und Prozeduren einen 
Typ haben.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Womit wir bei einer ganz anderen Frage wären:
Was willst du eigentlich machen, von dem du denkst, dass strncat eine 
Lösung sein könnte?

Ich hab da eine Vermutung.
Und um der Ausdruck zu geben, möchte ich relativ unkommentiert einfach 
folgende Zeilen zur Meditation freigeben.

  Es waren 2 Zahlen, 5 und 8
  die wollten sich aneinanderhängen.
  Da kam der Copperfield, der magische
  und rechnete:

      5 * 10 + 8
      macht 58


(ein 2ter Paul wird nie aus mir werden)

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich habe folgendes Problem

char S1[4];
char S2[25];
S1[0]=0XFF;
S1[1]=0XAA;
S1[2]=0XBB;
S1[3]=0XCC;


for ( uint8_t i = 0 ; i < 5 ; i++ )
{      {
 strncat(S2, S1[i], 24); /* the next word attach the rear */
 strncat_P(S2, PSTR(" "), 24); /* insert space*/
}
      }
ich möchte , dass S2 so aussieht: FF AA BB CC

danke

Autor: U.R. Schmitt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast Du Dir schon mal die Prozedur memcpy() angeschaut?
Oder eine einfache Zuweisung?
Ist dir das Konzept eines 'Zeigers' vertraut?
Hast Du schon mal in ein C Buch geschaut?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oliver schrieb:
> ich habe folgendes Problem
>
> char S1[4];
> char S2[25];
> S1[0]=0XFF;
> S1[1]=0XAA;
> S1[2]=0XBB;
> S1[3]=0XCC;
>
>
> for ( uint8_t i = 0 ; i < 5 ; i++ )
> {      {
>  strncat(S2, S1[i], 24); /* the next word attach the rear */
>  strncat_P(S2, PSTR(" "), 24); /* insert space*/
> }
>       }
> ich möchte , dass S2 so aussieht: FF AA BB CC

In Textform oder sollen ersten 4 Bytes von S2 so aussehen?

du musst erst mal damit anfangen zwischen Zahlen und der 
Textrepräsentierung von Zahlen zu unterscheiden!

12 ist nicht dasselbe wie "12"

ersteres ist eine Zahl mit der man rechnen kann. zweiteres ist ein 
String, so wie auch "Huber Franz" einfach nur ein String ist: Eine 
Abgfolge von Zeichen, die mit einem '\0' Zeichen abgeschlossen wird.

S1[0], mit dem Inhalt 0xFF, ist auch nur eine Zahl und kein String. 
Daher kannst du strncat so erst mal nicht benutzen! Du musst erst aus 
dieser Zahl einen String mit dem Inhalt "FF" machen. Dazu ist zb utoa 
dein Freund.
Und erst dann, wenn du die 4 Zahlen in ihre jeweilige textuelle Form 
überführt hast, du also 4 Strings hast, kannst du sie mittels den 
string-Funktionen zusammensetzen.


(Man kann natürlich auch alles in einem Aufwasch erschlagen, indem man 
sprintf die Arbeit machen lässt)

Du brauchst ein C-Buch.

Autor: U.R. Schmitt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl heinz Buchegger schrieb:
> Du brauchst ein C-Buch.

Es nützt aber nix, wenn es nur im Schrank steht :-(
Wo nimmst Du nur (fast) immer diese Geduld her?

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.