flopflopp
Messages postés14Date d'inscriptiondimanche 8 février 2004StatutMembreDernière intervention23 mars 2007
-
3 nov. 2004 à 11:24
virlix
Messages postés17Date d'inscriptionjeudi 24 juillet 2003StatutMembreDernière intervention 9 septembre 2005
-
3 nov. 2004 à 15:45
Bonjour je travaille tjrs sur mon éditeur de texte style vi et je voudrais vous soumettre un nouveau problème :
En fait j'ai une structure ligne qui est la suivante :
extern struct ligne
{
int numLigne; // Numéro de la ligne
char* tLigne; // Tableau de caractères terminés automatiquement par '\n' suivi de '\0'
struct ligne* lSuiv; // Pointeur sur la ligne suivante
struct ligne* lPrec; // Pointeur sur la ligne précédente
};
A partir de celà je voudrais écrire une fonction qui créee une ligne, cependant je n'arrive pas à mettre dans la même fonction le cas où on ajoute un premier élément et le cas où on ajoute un élement qui n'est pas le premier.
En effet si je cree une première ligne, lSuiv va pointer sur NULL et lPrec aussi. Mais quand je crée une 2nde ligne lSuiv de la ligne 1 pointe sur la ligne 2 et lSuiv de la ligne 2 pointe sur NULL. De plus lPrec de la ligne 2 doit pointer sur la ligne1.
Est ce possible de faire tt celà dans la même fonction qui serait ma fonction de création de ligne??????
luhtor
Messages postés2023Date d'inscriptionmardi 24 septembre 2002StatutMembreDernière intervention28 juillet 20086 3 nov. 2004 à 12:42
Tu pourrais pas créer une variable globale contenant le nombre de ligne totale. une telle variable peut toujours etre utile il me semble.
Pourquoi créer une première ligne ? quand tu crées un nouveau document la première est crée automatiquement. Apres lors de l'appel à la fonction création de ligne, reste à tester les cas particulier qui sont la première et dernière ligne, connaissant l'endroit où l'on veut ajouter une ligne.
virlix
Messages postés17Date d'inscriptionjeudi 24 juillet 2003StatutMembreDernière intervention 9 septembre 2005 3 nov. 2004 à 15:45
Oui mais il peut toujours inserer une ligne en premiere position donc son probleme reviendra quand il voudra faire cette operation.
Ton probleme de NULL ne devrait pas exister. C'est comme une liste de tache dans un environnement multitache. S'il n'y a qu'une tache et bien la suivante sera la seule qui existe.
Donc ton pointeur lSuiv pointe sur lui meme et lPrecedent pointe sur lui meme tant que de nouvelles lignes ne sont pas inserees.