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.
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è "ciaocodice: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
ragazzi"!
Uso Linux, se può servire.
Aiut!![]()

Rispondi quotando
