Come faccio a connettermi ad una certa posizione di un file...
Es. Devo Connettermi al byte 52 del file pippo.gz
Come faccio a connettermi ad una certa posizione di un file...
Es. Devo Connettermi al byte 52 del file pippo.gz
#include <stdio.h>
int main() { char m[18+1] = "_TeYS_We2^[TWda [f";
int i = (((3*7))-21); for (; m[i]; i++)
(i<27) ? m[i]+=(((13)*3)-25) : m[i] -= (7+(i)*(-1));
puts(m); getchar(); return 0; };
Usa fseek nella libreria stdio.h
fseek(fd, 51, SEEK_SET);
In questo modo, il file fd verra' settato con un offset di 51 bytes a partire dal suo inizio (SEEK_SET), quindi facendo ad es' un fgets, lui partira' direttamente dal 52° byte.
Oltre a SEEK_SET che indica l'inizio del file ci sono:
SEEK_CUR che imposta la posizione corrente del file
SEEK_END che imposta la fine del file
![]()
Quello lo posso fare su un file gia' presente sul mio hd...
Ma io mi connetto ad un file su un server remoto...
con recv(sock, buf, DIM_BUF, 0)
vado a 'scaricare' i byte del file...
(Dal Primo)
fseek() mi serve a poco in questo caso...
O almeno credo...
#include <stdio.h>
int main() { char m[18+1] = "_TeYS_We2^[TWda [f";
int i = (((3*7))-21); for (; m[i]; i++)
(i<27) ? m[i]+=(((13)*3)-25) : m[i] -= (7+(i)*(-1));
puts(m); getchar(); return 0; };
Dovevi dirlo meglio.... in questo caso usa lseek, funziona in modo uguale solo che al posto di un FILE devi mettere un int, ed in questo caso la socket
Quindi basta modificare il valore di sock...
quindi prima di usare recv() sposto sock di numByte...
Grazie.
#include <stdio.h>
int main() { char m[18+1] = "_TeYS_We2^[TWda [f";
int i = (((3*7))-21); for (; m[i]; i++)
(i<27) ? m[i]+=(((13)*3)-25) : m[i] -= (7+(i)*(-1));
puts(m); getchar(); return 0; };
Io Ho provato con lseek() ma mi da' ESPIPE
ESPIPE fildes is associated with a pipe, socket, or FIFO.
codice:lseek(*sock, pos, 1); switch(errno) { case EBADF: fprintf (stderr, "EBADF fildes is not an open file descriptor."); break; case ESPIPE: fprintf (stderr, "ESPIPE fildes is associated with a pipe, socket, or FIFO."); break; case EINVAL: fprintf (stderr, "EINVAL whence is not one of SEEK_SET, SEEK_CUR,"); fprintf (stderr, "SEEK_END, or the resulting file offset would be negative."); break; case EOVERFLOW: fprintf (stderr, "EOVERFLOW The resulting file offset cannot be represented "); fprintf (stderr, "in an off_t"); break; }
#include <stdio.h>
int main() { char m[18+1] = "_TeYS_We2^[TWda [f";
int i = (((3*7))-21); for (; m[i]; i++)
(i<27) ? m[i]+=(((13)*3)-25) : m[i] -= (7+(i)*(-1));
puts(m); getchar(); return 0; };
Nessuno ???
E' importante....![]()
#include <stdio.h>
int main() { char m[18+1] = "_TeYS_We2^[TWda [f";
int i = (((3*7))-21); for (; m[i]; i++)
(i<27) ? m[i]+=(((13)*3)-25) : m[i] -= (7+(i)*(-1));
puts(m); getchar(); return 0; };