Fehler im C-Tut

Diskussionen zu Tutorials, Änderungs- und Erweiterungswünsche
Benutzeravatar
cloidnerux
Moderator
Beiträge: 3123
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Fehler im C-Tut

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

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8859
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Fehler im C-Tut

Beitrag von Xin » Mi Jan 04, 2012 2:53 pm

Aaron hat geschrieben:Folgende Seite: http://www.proggen.org/doku.php?id=c:tu ... rausfinden
Kann es sein, dass hier ein Fehler in der 1.Zeile mit printf() gemacht wird?
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.

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3123
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Fehler im C-Tut

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

Re: Fehler im C-Tut

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?

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8859
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Fehler im C-Tut

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

Re: Fehler im C-Tut

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"

Antworten