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!