Hallo C-Freunde,
ich muss, wie der Titel schon sagt, sehr große Zahlen in C aus einer Datei einlesen und diese soll in folgendem struct gespeichert werden:
Das ganze soll im Little Endian Format mit Hilfe dieser Struktur im Zahlensystem 2^32 passieren. Jedes 32Bit Wort stellt also eine Ziffer bzw. Stelle da.
So heißt es in der Aufgabe. Irgendwie verstehe ich nicht ganz, wie ich da jetzt bitweise (oder jede Ziffer einzeln) einlesen soll. Bei Ziffern von 0-9 reichen
doch 4 Bit, oder stehe ich hier gerade nur total auf'm Schlauch?
Mein bisheriger Code zum testen von kleinen Zahlen ist bisher noch sehr simpel:
Er soll erst einmal nur einlesen und die Zahl ausspucken. Dabei ist es wichtig, dass es nur eine Zeile gibt.
Unter Windows mit dem angeblich uralten Compiler (Bloodshed Dev C++) funktioniert das wunderbar.
Unter Mac (Xcode mit akutellem GCC) terminiert die Schleife nicht und spuckt "0" aus, bzw. eben den Wert,
mit dem Zahl1 initialisiert wurde. Da das ganze aber unter Linux laufen soll (Mac ist ja Unix, dürfte also ok sein)
frage ich mich jetzt wirklich warum der gleiche Code so schön unter Win funktioniert, aber nicht unter Mac.
Kann mir da vielleicht wer aushelfen?
Vielen Dank im Vorraus. =)
Greetz, D
ich muss, wie der Titel schon sagt, sehr große Zahlen in C aus einer Datei einlesen und diese soll in folgendem struct gespeichert werden:
Code:
typedef unsigned int uint32;
typedef struct{
uint32 n;
uint32* words;
}
BigInt;
Das ganze soll im Little Endian Format mit Hilfe dieser Struktur im Zahlensystem 2^32 passieren. Jedes 32Bit Wort stellt also eine Ziffer bzw. Stelle da.
So heißt es in der Aufgabe. Irgendwie verstehe ich nicht ganz, wie ich da jetzt bitweise (oder jede Ziffer einzeln) einlesen soll. Bei Ziffern von 0-9 reichen
doch 4 Bit, oder stehe ich hier gerade nur total auf'm Schlauch?
Mein bisheriger Code zum testen von kleinen Zahlen ist bisher noch sehr simpel:
Er soll erst einmal nur einlesen und die Zahl ausspucken. Dabei ist es wichtig, dass es nur eine Zeile gibt.
Code:
FILE* Datensatz = fopen (argv[1], "r"); // öffnen(lesen, "r") der Datei (Parametereingabe)
if ( Datensatz == NULL ) // Wenn Datei nicht vorhanden ist:
printf("Ungueltiges Eingabeformat.\n"); // Ausgabe, Abbruch
else{ // Andernfalls: Einlesevorgang beginnen
for(i=0; !feof (Datensatz); i++){ // Zahl einlesen
if (i==0){
fscanf(Datensatz, "%d", &Zahl1);
}
else{
printf("Ungueltiges Eingabeformat.\n"); // Ausgabe, Abbruch
break;
}
}
} // Ende einlesen
printf("%d", Zahl1);
fclose(Datensatz); // Datei schließen
Unter Windows mit dem angeblich uralten Compiler (Bloodshed Dev C++) funktioniert das wunderbar.
Unter Mac (Xcode mit akutellem GCC) terminiert die Schleife nicht und spuckt "0" aus, bzw. eben den Wert,
mit dem Zahl1 initialisiert wurde. Da das ganze aber unter Linux laufen soll (Mac ist ja Unix, dürfte also ok sein)
frage ich mich jetzt wirklich warum der gleiche Code so schön unter Win funktioniert, aber nicht unter Mac.
Kann mir da vielleicht wer aushelfen?
Vielen Dank im Vorraus. =)
Greetz, D