Programmieren - alles kontrollieren 4.941 Themen, 20.708 Beiträge

In C eine Zahl über 10 Stellen einlesen

Nobody666 / 4 Antworten / Baumansicht Nickles

Hallo, will in C eine Zahl über 10 Stellen einlesen,


habe probiert mit scanf("%f",&test);


printf("%f",test);


funktioniert aber leider nicht, er gibt mir immer was anderes aus wie eingegeben ist.


Danke

bei Antwort benachrichtigen
Nobody666 Nachtrag zu: „In C eine Zahl über 10 Stellen einlesen“
Optionen

funktioniert wenn ich die Variable in double deklariere, kann dann aber Zahl nicht mehr in Hex mit printf umformen, oder gibt es da was anderes?

bei Antwort benachrichtigen
Andreas42 Nobody666 „In C eine Zahl über 10 Stellen einlesen“
Optionen

Hi!

Ich bin (wie gesagt) kein C/C++-Spezialist. Mag sein, dass es da was fertiges gibt - ich müsste auch erst nachschauen (das kannst du ja auch machen, es sollten Hinweise in der Doku zu finden sein).

Was ich dir geben kann, sind allgemeine Tipps, wie man solche Probleme löst. Naja, ein Handbuch zu Turbo-C++ 3.0 hab' ich auch. ;-)

Das Problem ist, dass deine Zahl nun nicht in einer Variable vom Typ Integer gespeichert werden kann. Und auf Integer beruht die Hexwandlung mit printf().
Es scheint auch eine Long-Version zu geben, ich kann das aber nicht testen: %10lX (dem X wird ein kleines L vorangestellt).

Falls printf() die Ausgabe eines Long-Wertes in Hexform nicht kann, musst du den Wert als Long einlesen und in zwei unsigned int-Werte aufspalten.

Bis denn
Andreas

Hier steht was ueber mein altes Hard- und Softwaregedoens.
bei Antwort benachrichtigen
Nobody666 Andreas42 „Hi! Ich bin wie gesagt kein C/C -Spezialist. Mag sein, dass es da was fertiges...“
Optionen

Danke für deine schnelle Antwort.
printf kann zwar hex schreiben, aber meine Zahl ist ab 210453663745 aufwärts, somit ist long auch nicht mehr ausreichen.
Wie meinst du das mit aufspalten, weiß nicht so recht wie ich das machen soll?

bei Antwort benachrichtigen
Andreas42 Nobody666 „Danke für deine schnelle Antwort. printf kann zwar hex schreiben, aber meine...“
Optionen

Hi!

Teil eine Zahl durch 256*256 (max. unsinged int Wert = max. Word-Wert). Einmal als Interger-Division und einmal per Modulo.

Der Rest der int. Division ist dann das "höherwertige" Word, das Mod.-Ergebnis das "niederwertige" Word.

Wenn du nun ganz normal das höherwertige Word in HEX umwandelst und danach das niederwertige und das Ergebnis hintereinander ausgibst, dann hast du das Ergebnis für den ursprünglichen Wert.

Bis denn
Andreas

Hier steht was ueber mein altes Hard- und Softwaregedoens.
bei Antwort benachrichtigen