2017-06-29 1 views
0

Ich versuche, die Hexadezimalwerte einer Variablen in einer Zeichenfolge aufzuteilen. Dazu benutze ich sprintf. Aber ich erhalte eine Fehlermeldung: Segmentation fault (core dumped)Split Hexadezimaldarstellung einer Ganzzahl und speichern Sie es in einer Zeichenfolge

Unten ist der Code, den ich versucht:

#include <stdio.h> 
#include <string.h> 

int main() { 

char* t1; 
char* t2; 

int n = 0x23A; 

sprintf(t1, "%X", n & 0xFF); 
printf("t1 is : %s\n",t1); 


sprintf(t2, "%X", (n >> 8) & 0xFF); 
printf("t2 is : %s\n",t2); 

return 0 ; 
} 

Zum Beispiel möchte ich 0x23A in 0x02 und 0x3A aufzuspalten Und ich bin mit zwei String, weil meine Idee verketten ist sie am Ende zu einer einzigen Zeichenfolge mit 023A zu bilden.

Gibt es einen anderen Weg, um diese Ausgabe zu erhalten, dann lass es mich wissen.

+1

Ich bin mir nicht sicher, warum Sie es "teilen" möchten, wenn alles, was Sie tun müssen, ist z. 'printf ("% 04X ", n)' –

+0

Sie müssen Platz für das Schreiben reservieren, auf das mit 't1' gezeigt wird. – BLUEPIXY

+0

Außerdem schlage ich vor, dass Sie Ihre Zeiger tatsächlich irgendwo zeigen. Oder verwenden Sie stattdessen Arrays. Denken Sie daran, dem Zeichenfolgenabschlusszeichen ein zusätzliches Zeichen zuzuweisen. –

Antwort

2

Sie verwenden einen nicht initialisierten Zeiger, der zu undefiniertem Verhalten führt.

Verwenden Sie einfach ein Zeichen-Array, so dass Sie etwas Platz für die Zeichenkette haben:

char t1[16]; 

sprintf(t1, "%X", n & ff); 
printf("t1 is '%s'\n", t1); 

Diese 3A gedruckt werden soll.

+0

Danke für Ihre Antwort. Auch als einer der Kommentare vorgeschlagen, dass, wenn wir 'printf ("% 04X ", n)' verwenden, dann keine Notwendigkeit, die Werte auch zu teilen. – TechJ

Verwandte Themen