Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine porta Logan in un'avventura inedita, violenta e fortemente narrativa, costruita attorno alla sua natura di combattente e al difficile rapporto con il proprio passato. Insomniac Games punta su combattimenti spettacolari, progressione e personalizzazione, inserendo l'azione in un mondo segnato dalla persecuzione dei mutanti. Un viaggio intenso, che alterna mattanza, esplorazione e momenti sorprendentemente emotivi.
DJI Romo 2: tante novità lo rendono un robot completo
DJI Romo 2: tante novità lo rendono un robot completo
Romo 2 è la seconda generazione di robot lavapavimenti di DJI, un modello che si caratterizza per la precisione nel sistema di navigazione e per il funzionamento particolarmente silenzioso. Con le modifiche introdotte in questa seconda versione, e un posizionamento di prezzo più allineato alla concorrenza, rappresenta una valida alternativa sul mercato delle soluzioni di pulizia domestica
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED
Il primo Sony con retroilluminazione True RGB alla prova del banco di misura e dei contenuti: luminanza enorme, colori accurati in HDR e un antiriflesso molto efficace. I limiti sono due sole HDMI 2.1 e il blooming fuori asse
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 08-07-2002, 17:08   #1
huntercity
Senior Member
 
Iscritto dal: Jun 2001
Città: Pisa
Messaggi: 628
[linux C] salvare una struttura su file

sono ancora io....

ho il seguente problema
ho una struttura di questo tipo
Codice:
typedef struct {
  char *name;         /* nome dell'entrata */
  mode_t tipo;        /* inidica il tipo di entrata */
  time_t t_modifica;  /* tempo ultima modifica */
  int esiste;         /* Flag per vedere se il file esiste nella directory dell'host SINCD */
} info_file;

info_file entrata;

....

	  if (S_ISREG(tipof)) {
	    /* scrittura dell'entrata sul file STAT_HOST*/
	    entrata.name = current_entry; 
	    printf("nome file %s \n",current_entry);
	    entrata.t_modifica = buffer.st_mtime;
	    entrata.esiste=0;
	    entrata.tipo=tipof; 
	   
	    retcode = write(fd,&entrata,sizeof(entrata));
	    if(retcode == -1) {
	      perror("scrivendo sul file locale");
	      exit(-1);
	      }
che uso per scriverla su un file
dove current_entry e' un char*

creato cosi
current_entry= (char *) malloc ( (strlen(directory) + strlen(entry->d_name) + 2) * sizeof(char));
sprintf(current_entry, "%s/%s", directory, entry->d_name);

il tutto inserito dentro un loop per scandire tutta la mia directory

il problema mi si presenta quando devo rileggere il file creato, poiche' (e credo giustamente) se faccio
while((letti = read(fyled,&comodo,sizeof(comodo))) > 0)

mi restituisce un bel segmentation fault, in quanto credo che essendo un campo char *, lui mi legga un carattere e non la stringa per intero che prima avevo salvato, mi devo mettere a leggere un carattere alla volta da file finche' non trovo lo '\0' oppure esiste un modo diverso per leggere delle stringhe a lunghezza variabile??

grazie
huntercity è offline   Rispondi citando il messaggio o parte di esso
Old 08-07-2002, 20:50   #2
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Il buffer char * va salvato e caricato a parte, ovviamente. Questo è un possibile approccio; per comodità mi salvo anche la lunghezza della stringa:

Salvataggio:
int len;
len = strlen(entrata.name);
write(fd, &entrata,sizeof(info_file));
write(fd, &len, sizeof(int));
write(fd, entrata.name,len);

Lettura;
int len;
read(fd, &entrata, sizeof(info_file));
read(fd, &len, sizeof(int));
entrata.name = (char *) malloc(len+1);
read(fd, entrata.name, len);
entrata.name[len] = '\0';

Altri approcci sono possibili.
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa Marvel's Wolverine, la recensione: Logan torna p...
DJI Romo 2: tante novità lo rendono un robot completo DJI Romo 2: tante novità lo rendono un ro...
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED Sony Bravia 9 II: il True RGB alla prova, dove l...
Geely EX5, un mese al volante: il SUV elettrico cinese che ci ha sorpreso (quasi) senza riserve Geely EX5, un mese al volante: il SUV elettrico ...
Mova Z70 Ultra Roller Complete: motore potente, rullo di lavaggio e l'IA a guidare Mova Z70 Ultra Roller Complete: motore potente, ...
iPhone 18 Pro e Pro Max, svelata la capa...
Dreame L50 Ultra AE a 499€ (invece di 59...
Problemi di gioventù per i Pixel 11: Goo...
Le app di dating potrebbero aver stufato...
Il successo di iPhone Duo rappresentereb...
Cartello sull'IA? L'accusa durissima con...
L'IA sempre più protagonista nei videogi...
Revolut ha consegnato passaporti e selfi...
Office 2021, 3 anni di aggiornamenti di ...
Dopo 23 anni di silenzio, Warcraft 3 spi...
Roblox sfida l'ecosistema gaming: app st...
OpenAI accusata di plagio dai migliori m...
Altro attacco hacker dell'IA: gli agenti...
Stiamo davvero perdendo il controllo del...
Microsoft perde un pilastro: Frank Shaw ...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 08:15.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v