Ben le soucis avec strtok, pour faire simple :
Code:
void lire_fichier() {
char contenuFichier[256];
get_contenu_fichier(contenuFichier);
for (char* i = strtok(contenuFichier, ";"); i; i = strtok(null, ";")) {
...blabla...
}
}
void foo(char* str) {
for (char* i = strtok(str, " "); i; i = strtok(null, " "))
lire_fichier(); // oops! große malheur
}
Déjà à la place en C++ on utilise std::string et pas des char. Je trouve ça un peu n'importe quoi de t'enseigner le principe des classes, des templates, etc. et pas std::string.
En gros on te facilite la vie tout en te tirant une balle dans le pied en même temps.
La façon la plus propre de faire ça c'est de ne pas modifier la chaine de caractères, mais de passer à chaque fois un pointeur vers le début et un pointeur vers la fin.
Après tu peux aussi stocker des copies de chaque bout de phrase dans un buffer à part, ou bien mettre les séparateurs à 0 manuellement à l'aide de strpbrk (plus sûr du nom)