Wie kann ich die Dateigröße einlesen
-
Original erstellt von entelechie:
...
es ist aber auch zu sagen, wenn eine funktion fseek(..) gibt,
die sich einmal so und einmal so verhalten kann, dann ist das
schwachsinnig! das makro "seek_end" suggeriert, dass man sich
zum dateiende bewegt. ich bin immer davon ausgegagen, dass
es das auch tut.
ich halte diese definition fuer sehr schwammig.So stimmt das nicht! Der Standard gibt klare Regeln vor, wie fseek() zu verwenden ist. Weicht ein Programmierer vom Standard ab, dann verlässt er sich auf systemspezifische Dinge oder eben auf undefiniertes Verhalten.
-
"The nice thing about standards is that there are so many to choose from." -- unbekannter Autor
Als da wären z.B. POSIX, worin fseek(x, SEEK_END) natürlich definiert ist.
-
naja ... mir ging's um den aktuellen ISO-C Standard ... :))
-
ich habe nie etwas anderes behauptet mady.
aber, fuer jemanden der den standard nicht so gut in
allen einzelheiten kennt (wie z.B. ich :)) ist ein
fseek( f, 0, SEEK_END ) sehr irrefuehrend.
-
Original erstellt von entelechie:
**ich habe nie etwas anderes behauptet mady.aber, fuer jemanden der den standard nicht so gut in
allen einzelheiten kennt (wie z.B. ich :)) ist ein
fseek( f, 0, SEEK_END ) sehr irrefuehrend.**Da muss ich Dir recht geben. Ich selbst hab' den Befehl längere Zeit verwendet ....
Viele meiner (älteren) C-Bücher und Nachschlagewerke vermitteln die Sprache C 'am Standard vorbei'. Da sind z.T. falsche Formulierungen oder Sachverhalte nachzulesen. Schlechte Tut's (z.B. pronix.de) tun dann noch ihr übriges.
-
Schlechte Tut's (z.B. pronix.de) tun dann noch ihr übriges.
Kannst du das mal genauer erläutern. Was ist an diesem Tutorial so schlecht. Hab es vor einiger Zeit komplett durchgearbeitet und fand es total genial gemacht von der Aufmachung und den Informationen. Und jetzt erfahre ich das Tutorial sei schlecht?
-
BOOL GetFindData(LPSTR ss, WIN32_FIND_DATA *lpwinfd) { WIN32_FIND_DATA w32ffd; HANDLE a; if (lpwinfd) memset(lpwinfd, 0, sizeof(WIN32_FIND_DATA)); if ((a = FindFirstFile(ss, &w32ffd))!=INVALID_HANDLE_VALUE) { do { if (!(w32ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) { FindClose(a); if (lpwinfd) memcpy(lpwinfd, &w32ffd, sizeof(WIN32_FIND_DATA)); return TRUE; } } while (FindNextFile(a, &w32ffd)); FindClose(a); } return FALSE; } DWORD GetFileSize(LPSTR ss) { WIN32_FIND_DATA w32ffd; if (!GetFindData(ss, &w32ffd)) return 0; if (w32ffd.nFileSizeHigh) return 0xffffffff; return w32ffd.nFileSizeLow; }
-
int_esskar: Deine Funktion ist ja schrecklich vom Programmierstil her.
-
Original erstellt von <Edgar>:
int_esskar: Deine Funktion ist ja schrecklich vom Programmierstil her.stimmt...vorallem weil sie gar nicht zu ANSI C passt... hab mich verschaut... sorry...
-
Sind wir hier in der Uni oder warum nennst du ein Handle einfach nur "a"? Übelst.
-
war nur ein bsp, wusst nicht ihr schönheiten sucht...dachte ihr sucht lösungen
-
Wir suchen nach schönen Lösungen.
-
Original erstellt von <Reaktor>:
Kannst du das mal genauer erläutern. ...Ja, kann ich.
1. http://pronix.de/ckurs/ckurs7.html
...Oft wird auch vom K&R C-S t a n d a r t gesprochen...
2. http://pronix.de/ckurs/ckurs14.html
Außerdem können sie void auf in Funktionen einsetzen die keinen Parameter haben. Auch in main - Funktion wenn sie wollen. Somit wäre.....
int main(void)
...gleichwertig zu.....
int main() ....
und weiter:
...Man kann void zum auch einen Zeiger auf void definieren. Natürlich muss man sich dann um die Typenumwandlung (cast) kümmern. ...
3. http://pronix.de/ckurs/ckurs34.html
Gibt man der main() - Funktion einen anderen Rückgabewert außer int, könnte in C99-Standard Compiler ein undefiniertes Verhalten auftreten. In vielen Büchern findet man die main() - Funktion in folgender Schreibweise wieder...
void main()
{
...
}Nach dem C89 - Standard ist dies auch richtig. ...
4. http://pronix.de/ckurs/ckurs65.html - Ab hier wird's dann richtig spannend: casts vor malloc(), sizeof(char), ....
Zweifelsohne steckt viel Arbeit in dem Kurs. Aber es sind halt doch ein paar Fehler drin .... ://
-
Original erstellt von kingruedi:
@entelchien
unter Linux kann dir das eh egal sein, da Unices keinen Binären Dateimodus kennen, da wird alles gleich behandelt (zum Glück!)Stimmt das??
unter c++ zumindestesn kann man "io::binary" öffnen ?
Hanns
-
Original erstellt von ^Hanns:
Stimmt das??
unter c++ zumindestesn kann man "io::binary" öffnen ?
Hannsjo, stimmt!
du kannst auch in c binaer oeffnen. aber unter unix ist textmodus==binaermodus