Salve!
ho creato una funzione che crea in nome
di un file in base al nome ricevuto in input.
se inserisco nomi tipo hello.txt mi dà l'output giusto,
ma se inserisco nomi del tipo C:\Documents and Settings\Blondi\Desktop\prove
mi sbaglia il nome ed esce qualcosa tipo C:\Docum_tokenlist.txt
Grazie!
codice:
/* ----------------- commento alla funzione Filenamer ----------------------- */
/*
* INPUT:
* - const String FileInput: il nome del file da scansionare, dal quale si
* deriverà il nome del file in cui verranno stampati i token;
* OUTPUT
* - valore stringa: il nome del file sul quale salvare i token;
* VARIABILI:
* - String FileOutput: variabile contenente l'output;
* - String FileSuffix: variabile contenente il suffisso del nome e la sua estenzione (.txt)
* - int len: variabile contenete la lunghezza che FileOutput deve avere per riuscire a contenere
* tutto il nome
* - int lun: variabile contenente la lunghezza della variabile di input, escludendo
* gli ultimi caratteri .c
* controllo con un if che la variabile input non sia nulla. In caso positivo:
* - calcolo la lunghezza che deve avere la variabile in output
* - calcolo la lunghezza della variabile di input escludendo gli ultimi quattro caratteri
* - uso la calloc per allocare lo spazio di memoria della variabile FileOutput
* - copio nella variabile di output prima il nome del file di input e poi concateno FileSuffix
* contenente la parte finale del nome del file di output e la sua estensione */
/* ----------------- fine commento ------------------------------------------ */
String FileNamer(const String FileInput) {
String FileOutput;
String FileSuffix = "_tokenlist.txt";
int len = 0;
int lun = 0;
if(FileInput!=NULL) {
len = (strlen(FileInput) + strlen(FileSuffix) - 3);
lun = strlen(FileInput) - 4; FileOutput = calloc(len, sizeof(char));
strncpy(FileOutput, FileInput, lun);
strcat(FileOutput, FileSuffix);
printf("%s",FileOutput);
} return FileOutput;
}