Partage
  • Partager sur Facebook
  • Partager sur Twitter

Faire descendre le curseur dans un fichier :

Sujet résolu
21 décembre 2006 à 20:40:53

Bonsoir !

Voici mon interrogation :
J'essaie de faire un programme emploi du temps en mode console , en utilisant un fichier texte dans lesquel l'utilisateur modifie la plage d'heure en introduisant le jour et l'heure , puis le curseur se déplace dans la bonne colonne , et insère une chaine .

Le problème, c'est que je ne connais pas la fonction qui permet de faire descendre le curseur d'une ligne ...

Mon ami Google non plus d'ailleurs .

Je vous serais reconnaissant de m'aider .

Cordialement ,Arvel .
  • Partager sur Facebook
  • Partager sur Twitter
21 décembre 2006 à 20:59:36

Un terminal ne sert pas à ça. Il n'y a aucun moyen de le faire de manière portable.
  • Partager sur Facebook
  • Partager sur Twitter
22 décembre 2006 à 0:11:08

Citation : remram44

Un terminal ne sert pas à ça.


Il existe quand même un mode 'plein ecran' qui permet de faire des choses (emacs, vi, c'est pas rien quand même...)

Citation : Pas de titre

Il n'y a aucun moyen de le faire de manière portable.


Ca, c'est un autre problème, bien qu'avec PDCurses, on ait quand même pas mal de possibilités portables...
  • Partager sur Facebook
  • Partager sur Twitter
Music only !
22 décembre 2006 à 17:29:08

Tout cela ne m'avance pas beaucoup ....

Je pense que remram n'a pas compris ma question ,et -ed- non plus...

J'ai un terminal console MS-DOS basique . A coté , j'ai un fichier .txt qui contient l'emploi du temps à proprement parler . Ce que je veux faire, c'est , avec une fonction , comme
fseek
</span>.

Sauf que fseek permet juste de faire bouger le curseur sur l'horizontale , alors que je voudrais faire descendre ou monter ce meme curseur .

Voila , j'espère que j'ai été plus précis .

Merci quand meme

  • Partager sur Facebook
  • Partager sur Twitter
24 décembre 2006 à 13:26:39

Citation : Arvel

J'ai un terminal console MS-DOS basique . A coté , j'ai un fichier .txt qui contient l'emploi du temps à proprement parler . Ce que je veux faire, c'est , avec une fonction , comme

fseek

</span>.

Sauf que fseek permet juste de faire bouger le curseur sur l'horizontale , alors que je voudrais faire descendre ou monter ce meme curseur .


What ? fseek() permet de deplacer l'index de lecture dans un fichier. Quel rapport avec l'affichage ?

Ne cherche pas de solution avant d'avoir exposé clairement ton problème.
  • Partager sur Facebook
  • Partager sur Twitter
Music only !
24 décembre 2006 à 15:10:11

Bon....

Pourquoi vous cherchez toujours la petite bete ?

C'est très simple pourtant :

J'ai un fichier texte , edt.txt .
Je lance mon programme , qui lit le fichier edt.txt via fgets .
Puis , une fois que l'utilisateur en a pris connaisance , il peut décider de modifier le fichier edt.txt .
Mais , comme je ne sais pas comment , avec l'aide de la fonction fseek , déplacer l'index de lecture comme le dit -ed- , je ne peux pas modifier ce fichier comme je le voudrais .

Je voudrais donc , savoir comment on fait descendre d'une ligne , ou monter d'une ligne l'index de lecture dans un fichier .

Cordialement ,Arvel .
  • Partager sur Facebook
  • Partager sur Twitter
24 décembre 2006 à 15:12:34

Bah tu lis le nombre de ligne voulues avec fgets () ?
  • Partager sur Facebook
  • Partager sur Twitter
24 décembre 2006 à 15:38:15

Citation : Arvel

Pourquoi vous cherchez toujours la petite bete ?


Parce que c'est notre métier. Ca te choque ? Alors cesse de faire de l'informatique.

Citation : Pas de titre


J'ai un fichier texte , edt.txt .
Je lance mon programme , qui lit le fichier edt.txt via fgets .
Puis , une fois que l'utilisateur en a pris connaisance , il peut décider de modifier le fichier edt.txt .


C'est pas si simple.

Modifier un fichier texte n'est pas trivial
Modifier une ligne de texte est encore moins trivial...

Voyons la suite...

Citation : Pas de titre


Mais , comme je ne sais pas comment , avec l'aide de la fonction fseek , déplacer l'index de lecture comme le dit -ed- , je ne peux pas modifier ce fichier comme je le voudrais .


Mais pourquoi tu parles 'solution' (fseek()) ? C'est trop tôt. Continue d'exposer le problème, on verra les solutions après. Si tu ne fais les choses dans l'ordre, tu vas droit dans le mur. C'est certain.

Citation : Pas de titre


Je voudrais donc , savoir comment on fait descendre d'une ligne , ou monter d'une ligne l'index de lecture dans un fichier .


De quelle ligne tu parles ? Celle qui est affichée à l'écran ? Si c'est ça, on t'a déjà répondu qu'il n'y avait pas de solution portable, car le mode plein écran n'est pas supporté par le langage C, et qu'il fallait préciser qiel était ton système.

Sache que se genre de manip se fait assez simplement en GUI avec des objets de type 'édit ou édition' qui sont faits pour ça (on a carrément un éditeur de texte basique mais puissant tout fait).

Si tu veux le faire en mode texte, il faut tout écrire à la main à l'aide de fonctions systèmes (Win32, Termios) ou des bibliothèques tierces (conio, [n]curses, PDCurses etc.)

Définir les entrées (clavier : caractères, flèches, touches spéciales...)
Définir les sorties (plein écran : déplacement du curseur, scrolling etc.

C'est beaucoup de boulot... Tu tiens vraiment à faire ça ?
  • Partager sur Facebook
  • Partager sur Twitter
Music only !
24 décembre 2006 à 16:34:51

Merci pour ce cours de méthode , j'en aurais bien besoin mais , tu es toujours dans l'erreur .

Je ne veux pas changer le contenu du terminal console . Je veux , afficher le fichier txt avec fgets , le modifier via un fprintf , c'est à dire modifier directement le fichier txt et non le terminal console , puis réafficher les modifications .

Je ne veux donc pas changer le contenu de ce qu'il y a à l'écran , je veux changer le contenu du fichier txt et le réafficher ensuite , modifié .

Voila , en tout cas, ton cours m'a appris des choses qui me serviront certainement .

Merci encore .

Arvel
  • Partager sur Facebook
  • Partager sur Twitter
24 décembre 2006 à 17:06:01

C'est bien ce que asmanur t'as dit avec un fgets c'est faisable de se placer dans un fichier, mais pour insérer du texte il va falloir que tu creuses un peu tes méninges.

Sache que c'est le Bloc Notes (ou tout autre éditeur de texte) qui te dit qu'il y a des "lignes", mais finalement ce n'est qu'une suite de caractères séparés par des caractères de fin de ligne
  • Partager sur Facebook
  • Partager sur Twitter
24 décembre 2006 à 17:11:17

Citation : Arvel

Je ne veux pas changer le contenu du terminal console . Je veux , afficher le fichier txt avec fgets , le modifier via un fprintf ,

Je ne vois pas ce que tu veux modifier avec un printf(). La notion de 'modifier' est beaucoup plus complexe que tu ne le penses.

Tout ce qu'on sait faire de manière simple, c'est présenter une ligne, puis demander de la retaper éventuellement modifiée. C'est rustique mais c'est simple, standard et portable. Si tu veux faire autre chose, explique, mais STP pas avec des nom de fonctions C. Explique avec des phrases de bon français simples et claires.

Ensuite, si tu veux que la ligne soit modifiée dans le fichier texte c'est encore une autre histoire. On ne sait pas modifier un fichier. En gros, il faut recopier le fichier dans un autre, ligne à ligne, tout en interceptant la ligne à modifier, que l'on remplace par la ligne modifiée.
  • Partager sur Facebook
  • Partager sur Twitter
Music only !
24 décembre 2006 à 19:04:42

Citation : asmanur

Bah tu lis le nombre de ligne voulues avec fgets () ?



Ah , je l'avais pas vu . Enfin une réponse simple et claire .

Je ne veux pas lancer un troll , donc je ne ferais pas de remarques .

Merci à tous .

  • Partager sur Facebook
  • Partager sur Twitter
26 décembre 2006 à 1:05:18

si j'ai bien compris ton problème, c'est que tu veux modifier ton emploi du temps qui est enregistré dans un fichier c'est bien ça?

pour ça tu veux modifier le fichier, je suis pas un as de super pro du C mais je ne sais pas si c'est possible et ça doit pas être évident (comme l'a dit -ed- )

ce que tu devrais faire, c'est un tableaudans lequel tu rentre tes valeurs à l'aide de fscanf(), tu modifie ces valeurs dans ton
tableau
et
pas dans ton fichier

tu réécris ensuite toutes les données dans ton fichier à l'aide de fprintf()

bon évidemment après les détails (comter le nombre de lignes etc. je te laisse le faire) mais je pense (au risque de me faire crier dessus car je n'ai pas essayée pour vérifier dans un programme du même type que le tien ce que je dit :euh: ) que cette methode devrait fonctionner alors en gros voilà : tu charge tes données dans un tableau, tu les modifie et tu réécris entièrement ton tableau

je ne pense pas que ton emploi du temps contienne des milliers et des milliers de lignes et de colonnes donc tu peux te permettre de tou effacer pour réécrire dessus, ton programme ne mettra pas un temps beaucoup plus considérable que juste modifier ce que tu veux changer

j'espère avoir été assez clair et t'avoir expliqué mon idée assez simplement pour te donner une idée constructive pouvant t'aider

bon courage à toi

  • Partager sur Facebook
  • Partager sur Twitter
26 décembre 2006 à 1:19:11

Citation : RemsNems

si j'ai bien compris ton problème, c'est que tu veux modifier ton emploi du temps qui est enregistré dans un fichier c'est bien ça?
<snip>
bon courage à toi

C'est clair que ce n'est pas optimisé ! ^^
  • Partager sur Facebook
  • Partager sur Twitter