Avatar billede evilfish Nybegynder
03. maj 2008 - 10:51 Der er 6 kommentarer og
1 løsning

Fil håndtering i Linux

Hej Eksperter

Jeg er i gang med at lave et program til en linux maskine, som skal manipulere med filer. Jeg har ledt lidt rundt omkring, men synes ikke jeg har fundet noget om dette.

Jeg leder specifikt om hvordan man får fil størrelsen ud, og hvordan man kan få filen som en byte/char array, som man så kan sende over en socket.

Er der nogle der har nogle gode sider, hvor jeg kan studere dette emne lidt mere?
Avatar billede arne_v Ekspert
03. maj 2008 - 14:51 #1
Fil størrelse:

#include <stdio.h>
#include <sys/stat.h>

int main()
{
  struct stat buf;
  if(!stat("fsize.c",&buf)) printf("%d\n",buf.st_size);
  return 0;
}
Avatar billede arne_v Ekspert
03. maj 2008 - 14:52 #2
Fil som char array:

bare læs den - fgetc/fread/fgets afhængig af hvad der passer med din logik
Avatar billede evilfish Nybegynder
04. maj 2008 - 13:02 #3
Kanon. Simplet, og enkelt. Ikke lige som de andre forslag jeg har set rundt omkring. Tak
Avatar billede arne_v Ekspert
04. maj 2008 - 16:40 #4
så smider jeg et svar
Avatar billede arne_v Ekspert
04. maj 2008 - 16:42 #5
stat er ikke en del af ANSI C men den findes i stort alle C implementeringer
(Unix, Linux, Windows, VMS etc.)

Hvis du får brug for mere hjælp med indlæsning i array, så skriv.
Avatar billede evilfish Nybegynder
05. maj 2008 - 10:12 #6
Har faktisk en du måske kan hjælpe med. Jeg skal have en int værdi konverteret til et char array.
Altså fx 1337 bliver til:

[0]: '1'
[1]: '3'
[2]: '3'
[3]: '7'

Hvis du kan følge mig. Jeg arbejder i linux, og har fået dette eksempel fra nettet. Jeg synes dog det er noget kryptisk:

                ostringstream ss;
                ss << fileLen;
                string ss2;
                ss.str().swap(ss2);
                char tests[20];
                bzero(tests,20);
                strcpy(tests, ss2.c_str());

Er der en anden måde at gøre det på?

Men du skal ihvert fald point fra din anden besvarelse.
Avatar billede martinbk Nybegynder
05. maj 2008 - 12:14 #7
den nemmeste måde jeg kan komme på er noget ala

char buf[100];
int nummer=1337;
sprintf(buf, "%i", nummer);
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester