Originariamente inviata da
felx
salve a tutti ragazzi non ho ide a di come fare riso9lvere questo problema sapreste aiutarmi?
ho pensato che potrei scorrere il vettore fin quando non trovo successive caratteri "/ " e salvarmi l'indice, ma non credo sia efficente potreste aiutarmi?
Creare i file path_split.h e path_split.c che consentano di utilizzare la seguente funzione:
extern void path_split(const char *str, char **path, char **filename);
La funzione prende come parametri una stringa C e due puntatori a puntatore a char. La funzione deve dividere la stringa (che sarà un percorso di file) in due parti in corrispondenza del carattere \ più a destra e modificare i puntatori puntati da path e filename in modo che puntino a due nuove stringhe allocate dinamicamente contenenti le due parti della stringa: la prima fino al carattere \ incluso e la seconda il resto.
Con il percorso c:\user\esami\FdI2017\esercizi si otterranno le stringhe c:\user\esami\FdI2017\ e esercizi.
Con il percorso c:\\user\\esami\\FdI2017\\esercizi\\file.txt si otterranno le stringhe c:\\user\\esami\\FdI2017\\esercizi\\ e file.txt
Con il percorso esercizi\\ si otterranno le stringhe esercizi\\ e la stringa vuota (colo terminatore).
Se la stringa è NULL la funzione imposta i puntatori puntati da path e filename a NULL.
un abbozzo che ho fatto è questo:
codice:
#include<string.h>
#include<stdio.h>
extern void path_split(const char *str, char **path, char **filename) {
int pa = strlen(str);
size_t i = pa + 1;
printf("%i", pa);
while (str[i] == '\\') {
i=i- 1;
}
for (size_t z = 0; z < i; z++)
path[z] = str[z];
path = 0;
size_t c = 0;
for (; str[i] != 0; i++){
filename[c] = str[i];
c++;
}
printf("%s", filename);
}
int main(void) {
char *c[100];
char *d[100];
path_split("c:\user\esami\FdI2017\esercizi", &c, &d);
}