Newsgroup: it.comp.lang.c
Titolo: Mappaggio file e criptaggio char

Salve, volevo chiedere due cosine.. :
1) Il mappaggio in c permette di leggere un file come un array di
byte, ok?
Come fare a leggere dei caratteri speciali dall'array??
Tipo leggere '-' oppre ':'. Vi spiego esattamente che voglio fare :
Vorrei creare una funzione che legge da un file vari parametri per
poterli usare; Leggere per esempio due array di char :
pippo-pluto
Sapete aiutarmi?? Devo mappare per forza il file in memoria?
2)Come posso criptare un array di char all'interno di un file, senza
criptare l'intero file???
Grazie mille!!!
Tzu

 byte, ok?
OK un piffero: cosa sarebbe questo "mappaggio"? Non l'ho mai sentito
nominare né in riferimento alla programmazione in C né in riferimento a
nessuna altra cosa. Fra l'altro, non lo vedo neanche sul vocabolario della
lingua italiana.
--
Cingar
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 lingua italiana.
file mappati in memoria???
C:\>iao Angelo
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 file mappati in memoria???
Esatto!!

 criptare l'intero file???
Se il risultato e` lungo esattamente quanto la stringa originale puoi
semplicemente fare:
char buff[BUFF_LEN];
fread(buff, 1, sizeof(buff), file);
/* rewind */
fseek(file, -sizeof(buff), SEEK_CUR);
/* cripta */
crypt(buff);
fwrite(buff, 1, sizeof(buff), file);
Se il risultato e` piu` lungo o piu` corto devi necessariamente
ricorrere ad un file temporaneo di appoggio.
Luca
-- 
Home: 
http://kronoz.cjb.net
Al termine di un pranzo di nozze mi hanno dato un
amaro alle erbe cosi' schifoso che perfino sull'etichetta
c'era un frate che vomitava.

 esigenze.
Ok! Fin qui son d'accordo! Ma se avessi più caratteri speciali
all'interno della stessa stringa???? Tipo :
pippo-pluto-topolino
in questo caso riesco solo a dividere pippo e pluto, ma non il
resto...
Grazie ancora!

Potrei usare la char *strtok(char *s1, char *s2)??
Se pongo s2 = '-';
Dovrei riuscire a dividere le stringhe....



Semmai s2 = "-";
qui un esempio breve:
<CODE>
    char  s[] = "pippo-pluto-paperino";
    char * p = strtok( s, "-" );
    while(p) {
        printf("%s\n", p );
        p = strtok( NULL, "-" );
    }
</CODE>
Tuttavia leggi la nota a fine pagina manuale, dove dice di evitare di
usare questa funzione.
Ciao
Matic

Allora ho provato come dicevo però purtroppo funziona..ma non
completamente...:(
Ecco il codice :
void read(){
  int fd, letti;
  char stringa[MAX];
  char dati[MAX], *wrk;
  char *u, *a, *s;
  /* aperura del file */
  sprintf(stringa, "\nserver, in apertura");
  IFERROR(fd = open("testo.txt",O_RDONLY),stringa);
  while((letti = read(fd, dati, MAX))> 0) {
    /* spazio di lavoro */
    wrk = malloc(100 * sizeof(char));
    dati[letti-1]='\0';
    /* metodo per leggere i vari campi del groupfile
       legge il nome dell'utente */
    u = strtok_r(dati, SEPARATORS,&wrk);
    printf("u = '%s' ", u);
    /* legge la password dell'utente */
    a = strtok_r(NULL, SEPARATORS,&wrk);
    printf("a = '%s' ", a);
    /* legge lo status dell'utente */
    s = strtok_r(NULL, SEPARATORS,&wrk);   
    printf("s = '%s'\n",s);
  }
  IFERROR(letti, "main : errore in lettura");
  /* chiusura file */
  IFERROR(close(fd), "main : Errore in chiusura");
}
Questo bel programmino legge un file editato tipo:
ciccio-insalata-forse
pippo-pluto-magari
Però funziona solamente per la prima riga..poi non funziona più!! Ho
pravato variando la dimensione del buffer, ma senza esiti
soddisfacenti...
Sapete aiutarmi??
Grazie! Tzu