Diskussionen zu Tutorials, Änderungs- und Erweiterungswünsche
-
cloidnerux
- Moderator
- Beiträge: 3125
- Registriert: Fr Sep 26, 2008 4:37 pm
- Wohnort: Ram (Gibts wirklich)
Beitrag
von cloidnerux » Mi Jan 04, 2012 1:25 pm
) oder existiert bei so einer Datei kein Nullbyte, da es nicht als Array gespeichert wird?
Nur Strings haben ein Null-Byte, um das ende zu Identifizieren. Dateien brauchen dies nicht, da die länge der Datei im Dateiheader steht und der Computer so genau weiß, wo das letzte Byte ist.
Ein Sonderfall wäre es, wen du ein string komplett in eine Datei schreibst, also mit Nullbyte, da wäre das letzte Byte auch das Null-Byte, hat aber dann mit der Datei an sich nichts zu tun.
Redundanz macht wiederholen unnötig.
quod erat expectandum
-
Xin
- nur zu Besuch hier
- Beiträge: 8862
- Registriert: Fr Jul 04, 2008 11:10 pm
- Wohnort: /home/xin
-
Kontaktdaten:
Beitrag
von Xin » Mi Jan 04, 2012 2:53 pm
Yepp.
Aaron hat geschrieben:
Code: Alles auswählen
fseek( file, 0, SEEK_END );
long int size = ftell( file );
printf( "Wir befinden uns an Position %ld, die Datei ist also bisher %ld Byte groß.\n", size, size-1 );
Ich dachte immer, dass die Datei wegen des zusätzlichen Nullbytes größer bzw. so groß wie die Anzahl der Elemente ist(inc. Element 0) oder existiert bei so einer Datei kein Nullbyte, da es nicht als Array gespeichert wird?
Ich kann momentan nur vermuten, dass ich mir auch irgendwas mit dem Nullbyte da ausgedacht habe, mit dem zusätzlichen Nullbyte wäre das aber size+1.
Ich weiß ja momentan gar nicht, ob ich mich darüber freuen soll, dass jemand das Tutorial so auf Herz und Nieren prüft (tue ich) oder ob ich schockiert sein soll, dass da soviele Fehler drin ist. Wie gesagt... ich muss es selbst noch Gegenlesen, es ist bisher nur geschrieben und die Quellcodes sind größenteils auch nur runtergeschrieben, aber ich bin doch etwas baff. ^^
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
-
cloidnerux
- Moderator
- Beiträge: 3125
- Registriert: Fr Sep 26, 2008 4:37 pm
- Wohnort: Ram (Gibts wirklich)
Beitrag
von cloidnerux » Mi Jan 04, 2012 10:55 pm
Ich kann momentan nur vermuten, dass ich mir auch irgendwas mit dem Nullbyte da ausgedacht habe, mit dem zusätzlichen Nullbyte wäre das aber size+1.
Es müsste doch size+1 heißen, nicht wegen dem Nulbyte aber wegen den 0-basierenden Indices.
Das erste Byte hat die Position 0 und damit das letzte realSize-1.
Redundanz macht wiederholen unnötig.
quod erat expectandum
-
Aaron
- Beiträge: 16
- Registriert: Mi Dez 28, 2011 9:56 pm
Beitrag
von Aaron » Do Jan 05, 2012 12:32 pm
Außerdem folgendes:
http://www.proggen.org/doku.php?id=c:tu ... aerdateien
Code: Alles auswählen
xin@trinity:~/workspace/proggen.org/c/tutorial/file$ gcc binwrite.c
xin@trinity:~/workspace/proggen.org/c/tutorial/file$ ./a.out
xin@trinity:~/workspace/proggen.org/c/tutorial/file$ ls -l datei.bin
-rw-r--r-- 1 xin xin 66 25. Mai 23:22 datei.bin
xin@trinity:~/workspace/proggen.org/c/tutorial/file$ hd datei.bin
00000000 70 72 6f 67 67 65 6e 2e 6f 72 67 20 62 69 6e 66 |proggen.org binf|
00000010 69 6c 65 00 04 00 01 00 00 00 00 00 0a 00 00 00 |ile.............|
00000020 02 00 14 00 00 00 1e 00 00 00 1e 00 0a 00 01 00 |................|
00000030 0a 00 00 00 0a 00 0a 00 01 00 0a 00 0a 00 00 00 |................|
00000040 00 00 |..|
00000042
Und dann der Text:
"Wir erkennen den Header oben. Die ersten
18 Byte enthalten „proggen.org binfile“, In der zweiten Zeile erkennen wir in der Bytedarstellung „ile“ und Nullbyte: 69 6c 65 00." Sind das nicht 19?
-
Xin
- nur zu Besuch hier
- Beiträge: 8862
- Registriert: Fr Jul 04, 2008 11:10 pm
- Wohnort: /home/xin
-
Kontaktdaten:
Beitrag
von Xin » Do Jan 05, 2012 10:38 pm
Aaron hat geschrieben:Außerdem folgendes:
http://www.proggen.org/doku.php?id=c:tu ... aerdateien
Code: Alles auswählen
xin@trinity:~/workspace/proggen.org/c/tutorial/file$ gcc binwrite.c
xin@trinity:~/workspace/proggen.org/c/tutorial/file$ ./a.out
xin@trinity:~/workspace/proggen.org/c/tutorial/file$ ls -l datei.bin
-rw-r--r-- 1 xin xin 66 25. Mai 23:22 datei.bin
xin@trinity:~/workspace/proggen.org/c/tutorial/file$ hd datei.bin
00000000 70 72 6f 67 67 65 6e 2e 6f 72 67 20 62 69 6e 66 |proggen.org binf|
00000010 69 6c 65 00 04 00 01 00 00 00 00 00 0a 00 00 00 |ile.............|
00000020 02 00 14 00 00 00 1e 00 00 00 1e 00 0a 00 01 00 |................|
00000030 0a 00 00 00 0a 00 0a 00 01 00 0a 00 0a 00 00 00 |................|
00000040 00 00 |..|
00000042
Und dann der Text:
"Wir erkennen den Header oben. Die ersten
18 Byte enthalten „proggen.org binfile“, In der zweiten Zeile erkennen wir in der Bytedarstellung „ile“ und Nullbyte: 69 6c 65 00." Sind das nicht 19?
20
Ich habe die Quellen soweit korrigiert, aber weiterhin noch nicht korrekturgelesen. Aber interessanterweise habe ich noch einen Bug gefunden, nämlich, dass Windows bei append() etwas merkwürdig reagiert. Ich habe es reingeschrieben, muss das aber nochmal erweitern. Aber nicht mehr heute. ^^
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
-
Aaron
- Beiträge: 16
- Registriert: Mi Dez 28, 2011 9:56 pm
Beitrag
von Aaron » Fr Jan 06, 2012 11:54 am
Ich meinte die 19 eig. ohne Nullbyte denn ich wusste nicht ob in den Anführungszeichen das Nullbyte "zu sehen" ist. Deshalb aus genau diesem Grund(Missverständnis) würde ich dazuschreiben: "incl. Nullbyte"