Visual Studio Win32: Probleme mit printf

Gast #3598466
Lesenswert?

Guten Morgen,

folgendes Problem habe ich mit der Funktion printf in einer Win32 
Konsolenanwendung. Von einer Kommunikationsschnittstelle werden Daten 
empfangen. Es handelt sich um mehrere char Zeichen, die in einen Buffer 
vom Type char abgelegt werden. Diese Zeichen werden mit der Funktion 
printf nicht dargestellt. Woran könnte dies liegen?
1
char Buffer[256];
2

3
printf("Message number: %2i Length = %i  Data = %s\n", i++,Len,Buffer);
Moderator #3598602
Lesenswert?

Was genau wird denn (nicht) angezeigt?

Wird denn wenigstens alles bis zum "Data =" ausgegeben?

Wenn ja, werden für die Message Number und die Length die richtigen
Zahlenwerte ausgegeben?

Was wird nach "Data =" abgezeigt? Gar nichts oder falsche Zeichen?

Von welchem Typ sind i und len?

Zwar für das konkrete Problem nicht relevant, aber trotzdem wichtig: Ist
Buffer nullterminiert?
Gast #3598987
Lesenswert?

Hier ein Ausschnitt von der Applikation:
1
int i = 0;
2
char Buffer[256];
3

4

5
void Receive(void)
6
{
7
  int Len;
8
         Len = UDP->Receive(&UDP,Buffer, 256,0);
9
  if(Len)
10
  {
11
    printf("Message number: %2i Length = %i  Data = %s\n", i++,Len,Buffer);
12
  }
13
}
Moderator #3599144
Lesenswert?

Ich glaube, wir brauchen hier gar nicht weiter zu rätseln.

vs_entwickler hat die Eingangsdaten genannt

> 0x08
> 0x00
> 0x44
> 0x50
> 0x20
> 0x43

und Peter II hat ihm erklärt, warum sie nicht (sichtbar) ausgegeben
werden.

Da sollten eigentlich keine Fragen mehr offen sein :)

Um jetzt doch noch etwas zu rätseln: Ich schätze, dass die ersten beiden
Byte (0x08 und 0x00) die Länge und/oder den Nachrichtentyp enthalten. Um
nur den reinen Text auszugeben, sollte man vielleicht erst bei Byte 2
beginnen, also etwa so:
1
    printf("Message number: %2i Length = %i  Data = %s\n", i++,Len,Buffer+2);

Dabei muss aber sichergestellt werden, dass am Ende des Texts in Buffer
ein String-Ende-NUL-Zeichen steht. Ich kann mir nicht vorstellen, dass
UDP->Receive dieses von sich aus anhängt.

Aber wie gesagt, auch das ist alles nur gerätselt.

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