29. januar 2003 - 21:03Der er
15 kommentarer og 2 løsninger
ftell/fread på Win32
Jeg har lavet følgende simple program, der virker fint under linux. Såvidt jeg har kunnet læse i diverse hjælpefiler, burde det også virke under win32, hvor man bruger io.h istedet for unistd.h. Men det gør det ikke.
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
Kan du ikke prøve at forklare hvad det er koden gerne skulle gøre ? Skal den læse indholdet af "index.tpl" til en buffer og printe bufferen til stdout ?
int main(void) { int fd; int len; char *content; if ((fd = open("index.tpl", O_RDONLY)) == -1) fail("open"); len = lseek(fd, 0, SEEK_END); lseek(fd, 0, SEEK_SET); content = new char[len+1]; printf("Len is: %d\n", len); if ((len = read(fd, content, len)) < 1) fail("read"); printf("Read %d bytes\n", len); getchar(); content[len] = 0; puts(content); delete [] content; getchar(); return 0; }
Jeg får flg. resultat på skærmen: Len is: 5345 Read 5223 bytes Hvorefter den udskriver HELE indholdet af filen, der mangler ikke noget...
Så det store spørgsmål går i virkeligheden ud på hvorfor seek til slutningen af filen tilsyneladende giver en position, der er 122 bytes for meget i forhold til længden!?!?
den er 5.345 når jeg laver dir... men jeg er sikker på at I har ret. jeg prøvede at lave en binary read og så passede pengene :)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.