Buffer trennen

Viper2009

Erfahrenes Mitglied
Hallo, ich brauche eure Hilfe, ich weiß dass es eine leichte Aufgabe ist aber nun.

Ich habe ein Buffer der volgenden Code beinhaltet: R0F960000000008D5E0B0
da ich nur die letzten Zahlen brauche wollte ich fragen wie ich dies nun trenne ("08D5E0B0").
Anwendug wird in C geschrieben.

Danke für eure Hilfe.
 
Hi.

Das Beispiel ist schon nicht schlecht, nütz aber nicht viel. Wie ist denn festgelegt wo du trennen mußt?

Gruß
 
Mhh, das ist der Buffer so erhalte ich ihn "R0F960000000008D5E0B0" trennnen und wiedergeben muss ich das "08D5E0B0". Es sind 21 zeichen und die letzten 8 Zeichen muss ich wiedergeben. Hoffe das hilft dir?
 
Ja, da mußt du ja nur die ersten 21 - 8 Zeichen überspringen:

C:
char* buffer = "R0F960000000008D5E0B0";

puts(buffer + strlen(buffer) - 8);
Gruß
 
Danke für die Antwort werde es mal versuchen. :D

//Edit: Thx funktioniert wunderbar :D.
 
Zuletzt bearbeitet:
Kann mir mal jemand sagen was ich hier falsch habe oder mache ich nur ne Denkfehler

Denn ich bekomme immer die Aussage das es nicht identisch ist...?

Code:
	char sBuffer[8];
	char* Buffer="R0F960000000008D5E0B0";
	printf("Buffer Code: %s\n",Buffer);

	sprintf(sBuffer,"%s",Buffer + strlen(Buffer) - 8);
	printf("sBuffer Code: %s\n",sBuffer);
	printf("Pruefen mit \"08D5E0B0\": ");
	
	if(sBuffer=="08D5E0B0")
	{
		printf("Identisch.");
	}
	else
	{
		printf("Nicht identisch.");	
	}

Danke für die Antworten :)
 
Hi.

Du vergleichst da 2 Zeiger - und die sind mit Sicherheit nicht gleich.

Strings muß man mit den Funktionen strcmp / strcasecmp / strncmp / strncasecmp vergleichen.
C:
#include <strings.h>
...
if (strcmp(string1, string2) == 0) { /* strings sind gleich. */
  ...
} else if (strcmp(string1, string2) < 0) { /* erster String ist lexikographisch kleiner als string2 */
  ...
} else { /* erster String ist lexikographisch größer als string2 */
  ...
}
Gruß
 
Ahh danke für die schnelle Antwort :D.

//Edit: Erfolgreich, noch mal Danke Deepthroat, für deine Zeit Opferung :p

Gruß
Viper
 
Zuletzt bearbeitet:
Hallo, ich habe mal wieder eine kleine Frage.
Und zwar habe ich zwei Edit-Fenster (Eingabe und Wiedergabe).
In der Wiedergabe, soll aber nur immer die letzten 5 Zeichen stehen.
Im oberen Beitrag mach man es mit "Buffer+strlen(Buffer)-5" und es geht, aber wie so geht es bei der anwendung nicht

Kleines Beispiel:
Code:
void GetAusgabe ()
{

	char *Text[256];
	int iLength[256];
	char Text2[256];

	GetWindowText(EingabeWnd, Text, iLength);
	wsprintf (Text2, L"%s",Text+strlen(Text)-5);
	SetWindowText (AusgabeWnd, Text2);
}
 
Hi.

Du wendest die GetWindowText Funktion falsch an. Eigentlich sollte dich dein Compiler doch warnen, oder?

Der dritte Parameter muß vom Typ int sein und sollte angeben wieviel Werte in dem zweiten Parameter - der vom Typ LPTSTR ist - hineingeschreiben werden sollen/können. Du übergibst da mit der Adresse einen mehr oder weniger zufälligen Wert.

Der zweite Parameter ist vom Typ LPTSTR (also im Grunde ein C-String) - das Argument was du der Funktion übergibst ist ein Array von C-Strings...

C:
TCHAR text[256];

GetWindowText(EingabeWnd, text, sizeof(text) / sizeof(*text));
Gruß
 
Zurück