Oppure

Loading
14/06/16 13:54
Simo9912
Scusate ho un problema con C...
Io devo prendere da un file degli array per convertirli in altri array in base alle scelte che può fare un utente...
Però davanti alla mia stringa di inizio file ho Questo codice(;)il problema che non è una stringa ma il BOM del UTF-8 ...come faccio a rimuoverla???
aaa
14/06/16 14:39
AldoBaldo
Non ne so niente di queste cose. Proprio per questo ho cercato qualche notizia su 'sto "BOM dell'UTF-8" e sto cercando di capire. Il file dal quale devi estrarre l'array è dunque un file di testo dove ogni carattere è rappresentato in uno "spazio" di 8 bit? Da quel che ho letto m'è parso di capire che un file in UTF-8 può essere letto come un qualsiasi file di testo, e che i primi tre caratteri "" sono lì solo per ragioni di compatibilità o qualcosa del genere. Se fosse così, non sarebbe sufficiente cominciare a estrarre i dati dal quarto carattere del file in avanti?
ATTENZIONE! Sono un hobbista e l'affidabilità delle mie conoscenze informatiche è molto limitata. Non prendere come esempio il codice che scrivo, perché non ho alcuna formazione accademica e rischieresti di apprendere pratiche controproducenti.
14/06/16 14:52
Simo9912
Premetto che non ne so praticamente niente di C.....praticamente dovrei avere le prime due righe libere senza quei caratterei dell'UTF-8 per usarli in quanto devo fare una sostituzione.....come potrei fare a toglierli...c'è piu precisamente cominciare la ricerca 4 caratteripiu avanti???
aaa
14/06/16 14:52
Simo9912
Ops..questo è il file
Ultima modifica effettuata da Simo9912 14/06/16 14:55
aaa
14/06/16 15:14
TheDarkJuster
fseek(file_handler, 3, SEEK_SET);

sposta il cursore caratteri avanti alla posizione iniziale, così il byte letto successivamente sarà il quarto.

però prima di farlo conviene controllare se è veramente necessario:

char possibleBOM[3];
fread((void*)&possibleBOM[0], sizeof(char), 3, file_handler);
if ((possibleBOM[0] != 'ï') || (possibleBOM[1] != '»') || (possibleBOM[2] != '¿')) fseek(file_handler, 0, SEEK_SET);


La seconda soluzione è la migliore, ma la prima è quella che risolve il tuo problema in maniera più immediata, ma darà problemi con file non UTF-8
aaa
14/06/16 15:19
Simo9912
Scusa non ho ben capito cosa fa e dove dovrei inserire il codice...
aaa
14/06/16 15:24
TheDarkJuster
Prima della lettura del file.

Il file_handler è il file aperto con fopen();

suppongo avrai qualcosa del genere nel tuo codice:
FILE* file_handler = fopen("miofile.txt", "r");


aggiungi dopo quello che ti ho dato:
FILE* file_handler = fopen("miofile.txt", "r")
char possibleBOM[3]; 
fread((void*)&possibleBOM[0], sizeof(char), 3, file_handler);
if ((possibleBOM[0] != 'ï') || (possibleBOM[1] != '»') || (possibleBOM[2] != '¿')) fseek(file_handler, 0, SEEK_SET);


e i caratteri successivi che leggerai saranno quelli che ti aspetti di leggere.
Ultima modifica effettuata da TheDarkJuster 14/06/16 15:25
aaa
14/06/16 15:46
Simo9912
Oraprovo e vi so dire grazie
aaa