Ciao,
vorrei prendere delle stringhe da un file di testo, e ho il problema che queste stringhe non sono interpretate correttamente in termini di caratteri speciali, in particolare il newline.
Per capirci, se stampo a video "ciao\nragazzi" la seconda parola sarà a capo; se però stampo a video una variabile di tipo char* riempita con il contenuto di una riga del file di testo succitato, riga che sarà sempre "ciao\nragazzi", mi viene stampato a video proprio "ciao\nragazzi" con backslash ed n visti come caratteri assestanti.
Apro il file in modalità testo, lo scorro con getline, estraggo la sottostringa e la copio nella variabile con strncpy.
codice:
dictFileR = fopen(dictFilePath,"r");
while(getline(&oneLine, &nbytes, dictFileR)!=-1){
for(j=0; j<N_WORDS; j++){
// use strcspn() to calculate the length of the first substr in line before ":="
// alternatively, consider the use of strstr() or strchr()
tmp=strndup(oneLine,strcspn(oneLine,":"));
if(strcmp(tmp,wordList[j])==0){
valueLen=strlen(oneLine)-strlen(wordList[j])-2; // 2 is the lentgh of ":="
d_words[j]=malloc(valueLen*sizeof(char));
strncpy(d_words[j],"",1);
strncpy(d_words[j], strncat(d_words[j], strndup(oneLine+strlen(wordList[j])+2, valueLen), valueLen), valueLen);
}
} //end for
free(tmp);
} // end while
Se il contenuto copiato ad esempio in d_words[3] è "ciao\nragazzi", e poi faccio puts(d_words[3]) mi viene stampato a video "ciao\nragazzi" anzichè "ciao
ragazzi"!
Uso Linux, se può servire.
Aiut!