C++ Char zuweisen

OP #3333542
Lesenswert?
• ▲
▼
Hallo zusammen,

vermutlich sehe ich den Wald vor lauter Bäumen nicht, aber ich habe ein 
Problem...

Eigentlich möchte ich nur zwei Zeichen einem char Array zuweisen:
1
char Buffer5[3]         // Da sollen die Zeichen rein
2
char sInbuffer2[2000]   // Da stehen die Zeichen drin
3
char *pSin2in           // Zeigt über 5 Umwege auf sInbuffer2

Die ersten beiden Zeichen von sInbuffer2 sollen nun in Buffer5.

1. Versuch
1
Buffer5[0] = sInbuffer2[0];
2
Buffer5[1] = sInbuffer2[1];
--> Buffer5 bleibt leer (/0/0/0)

2. Versuch
1
Buffer5[0] = (char) *pSin2in;
2
Buffer5[1] = (char) *(pSin2in+1);
--> Buffer5 bleibt leer (/0/0/0)

3. Versuch
1
strncpy(Buffer5, sInbuffer2, 2);
--> Buffer5 bleibt leer (/0/0/0)

Was mache ich nur falsch???

Danke, Tobi
OP #3333552
Lesenswert?
• ▲
▼
zumindest der Debugger behauptet, es stüde etwas drin...
1
sInbuffer2 = "4F7ED4004C08\r\n"
Und die Strichpunkte sind da wo sie hingehören, ist schließlich 
übersetzbar
1
char Buffer5[3];         // Da sollen die Zeichen rein
2
char sInbuffer2[2000];   // Da stehen die Zeichen drin
3
char *pSin2in;           // Zeigt über 5 Umwege auf sInbuffer2
OP #3333568
Lesenswert?
• ▲
▼
Komplett ist leider etwas schwierig, ist ein fertiges Programm mit >2000 
Zeilen, an dem ich "nur eine Kleinigkeit" ändern wollte.

1
char Buffer5[3];         // Da sollen die Zeichen rein
war im Header deklariert.
Ich habe es dort gelöscht und lokal deklariert. Der Rest blieb wie in 
Versuch 3.
Jetzt geht es. Aber warum ist mir immer noch nicht klar...
#3333577
Lesenswert?
• ▲
▼
Tobi Tobi schrieb:

> Ich habe es dort gelöscht und lokal deklariert.

Das könnte schon der Grund gewesen sein :-)
Du hattest 2 derartige Arrays im System.

Ins Header File kommen keine Definitionen von globalen Variablen! Und 
modullokale Variablen haben im Header File schon gleich gar nichts 
verloren.


xxx.h
1
extern char Buffer[3];   // es gibt eine globale Variable.
2
                         // Sie wird nicht hier vereinbart, aber es gibt sie
3

4
void InitXXX( void );

xxx.c
1
#include "xxx.h"
2

3
char Buffer[3];    // hier ist die globale Variable
4

5
static char Buff[8];  // diese 'globale' Variable ist nur für Funktionen innerhalb
6
                      // von xxx.c sichtbar. Von aussen gibt es keinen Zugriff
7
                      // darauf
8

9
void InitXXX()
10
{
11
  Buffer[0] = 'a';
12
  Buff[0] = 'b';
13
}

yyy.c
1
#include "xxx.h"
2

3
int main()
4
{
5
  InitXXX();
6

7
  printf( "%c\n", Buffer[0] );
8
}
OP #3333593
Lesenswert?
• ▲
▼
Karl Heinz Buchegger schrieb:

> Das könnte schon der Grund gewesen sein :-)
> Du hattest 2 derartige Arrays im System.
>
> Ins Header File kommen keine Definitionen von globalen Variablen! Und
> modullokale Variablen haben im Header File schon gleich gar nichts
> verloren.

Dann werde ich wohl jetzt etwas besser darauf achten, wo meine Variablen 
liegen.

Aber so ganz versteh ich es immer noch nicht.

Wenn meine Variable nur 1x angelegt ist, dann sollte es doch egal sein, 
ob im Header oder einem der C-Files.

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