Autre chose que du texte ?

Discutez d'informatique ici !
Avatar de l’utilisateur
Rockleader
Habitué(e)
Messages: 2126
Enregistré le: 11 Oct 2011, 18:42

Autre chose que du texte ?

par Rockleader » 17 Jan 2014, 12:50

Hello tous le monde;

je me lance dans un petit projet personnel, en espérant que ça m'aide à progresser un tantinet pour les cours à coté.
Je souhaite donc réaliser ce "mini logiciel" en C. Et je me posais à présent quelques questions.


Je me posais souvent l'an dernier la question: Comment fait on pour sauvegarder des données à la fermeture d'un programme

je me doute que la réponse n'est pas complète; mais l'écriture de ces données dans un fichier me paraît être une première solution acceptable à mon humble niveau.


Le programme prendra plusieurs entrées avec une structure; et les écrira dans un fichier pour ensuite pouvoir les retrouver.

Cependant, j'aimerais savoir s'il y a moyen de "formater" un peu tout ça; je sais que l'on peut déplacer le texte en déplaçant le curseur au moment d'écrire avec fseek par exemple; mais imaginons que je veuille écrire mon texte en l'incorporant dans des cases d'un tableau ou ce genre de chose. Que je veuille changer des couleurs etc etc

Dans l'ensemble; comment travailler sur le code en C pour modifier les paramètres du texte en lui même.

Voilà désolé si je me fais pas très bien comprendre; je saute surement des étapes pour en arriver là; mais je me rappelle avoir lu sur un autre sujet que réaliser le programme dans une fenêtre ce n'était pas le plus dur; j'imagine donc qu'ici ce doit être sensiblement le même principe.

Merci à vous !
Cette histoire est entièrement vraie puisque je l'ai inventé du début à la fin !



Avatar de l’utilisateur
ampholyte
Membre Transcendant
Messages: 3940
Enregistré le: 21 Juil 2012, 07:03

par ampholyte » 17 Jan 2014, 13:41

Bonjour,

J'avoue avoir un peu de mal à comprendre ce que tu veux faire.

Tu parles d'un mini projet en C mais peux-tu nous en dire un peu plus sur ce mini-projet, car pour le moment c'est assez flou.

Peux-tu nous décrire ce que tu souhaites faire afin que l'on puisse te proposer une solution la plus adapter pour ce que tu souhaites faire ?

Avatar de l’utilisateur
Rockleader
Habitué(e)
Messages: 2126
Enregistré le: 11 Oct 2011, 18:42

par Rockleader » 17 Jan 2014, 14:07

ampholyte a écrit:Bonjour,

J'avoue avoir un peu de mal à comprendre ce que tu veux faire.

Tu parles d'un mini projet en C mais peux-tu nous en dire un peu plus sur ce mini-projet, car pour le moment c'est assez flou.

Peux-tu nous décrire ce que tu souhaites faire afin que l'on puisse te proposer une solution la plus adapter pour ce que tu souhaites faire ?



Rien à voir avec mes cours je tiens à le préciser ;)

Disons que j'ai une structure membre composé de divers champs un tableau de nom, prenom et autre. Voir même un chiffre pour simplifier la question.

Admettons que je rentre des informations du style dans ma variable de structure; ça ne pose aucun problème.

nom1 prenom1 age1
nom2 prenom2 age2


De là je peux l'écrire dans un fichier avec un fprintf.

Mais si je ne veux pas simplement l'écrire, mais appliquer divers effets; par exemple je voudrais rentrer des informations dans un tableau (quand je dis tableau c'est un vrai tableau avec des lignes de façon à ce que lorsque le fichier s'ouvre on voir les infos dans des cases de tableau).
Dans ces cases le texte en lui même pourrait avoir divers effets; être en italique, ou en couleur, ou souligné etc etc.


Je ne sais pas si ce genre de choses est possible; mais au final c'est un peu le code qui se cache derrière des traitement de texte nan ?
Cette histoire est entièrement vraie puisque je l'ai inventé du début à la fin !

Avatar de l’utilisateur
fatal_error
Membre Légendaire
Messages: 6610
Enregistré le: 22 Nov 2007, 12:00

par fatal_error » 17 Jan 2014, 14:25

hello,

n importe quelle information doit etre sauvegardee dans le fichier par un moyen ou par un autre.
que dans ton fichier tu ecrives
nom1prenom1age1
ou
nom1 prenom1 age1
quelquepart c 'est pareil, c est une suite de caracteres.

Ce qui est important c est ce que tu en fait dans ton programme.
tu peux tres bien imaginer ecrire
rednom1
ou bien
nom1
ou bien
nom1 _red prenom1 age1 _blue
etc...

c est toi qui choisit comment tu encodes ton information
la vie est une fête :)

Avatar de l’utilisateur
Rockleader
Habitué(e)
Messages: 2126
Enregistré le: 11 Oct 2011, 18:42

par Rockleader » 17 Jan 2014, 14:41

Justement; la syntaxe servant à l'encoder on la trouve où ?

Quand je vois ce que tu écris ça me fait plus penser à du html par exemple qu'à du C =)

Je cherche un peu partout mais je trouve pas vraiment; ou alors je ne sais pas ou chercher...
Cette histoire est entièrement vraie puisque je l'ai inventé du début à la fin !

Avatar de l’utilisateur
ampholyte
Membre Transcendant
Messages: 3940
Enregistré le: 21 Juil 2012, 07:03

par ampholyte » 17 Jan 2014, 14:58

D'accord, en fait tu as plusieurs solutions possible :

- Solution de fatal_error : créer un format de stockage (exemple de fatal_error, c'est à toi de choisir et construire ton format). Pour récupérer les données il suffit alors ensuite de parcourir le fichier et d'extraire les informations suivant le format que tu as créé.

- Stocker directement le contenu de ton tableau de structure dans un fichier binaire. (cf : http://fr.openclassrooms.com/informatique/cours/lecture-et-ecriture-de-fichiers-en-mode-binaire), cela te permet de reconstruire très rapidement ton tableau de structure.

Avatar de l’utilisateur
ampholyte
Membre Transcendant
Messages: 3940
Enregistré le: 21 Juil 2012, 07:03

par ampholyte » 17 Jan 2014, 15:20

Comme tu dois le savoir, chaque extension a son propre format d'écriture, un fichier pdf et un fichier un .doc ne peux pas être ouvert avec tous les logiciels.

Tu peux te renseigner ici : http://fr.wikipedia.org/wiki/OpenDocument#Description_du_format par exemple pour le format openDocument.

Avatar de l’utilisateur
Rockleader
Habitué(e)
Messages: 2126
Enregistré le: 11 Oct 2011, 18:42

par Rockleader » 18 Jan 2014, 19:37

Merci; je continue à chercher.
Cette histoire est entièrement vraie puisque je l'ai inventé du début à la fin !

Valentin03
Membre Relatif
Messages: 429
Enregistré le: 23 Déc 2012, 13:08

par Valentin03 » 20 Jan 2014, 12:18

Rockleader a écrit:Merci; je continue à chercher.

Perso pour ce genre de chose, je n'encode rien; une ligne par data et basta.
Et c'est au retour (rappel du fichier), que j'envoie les datas dans un tableau, une chaîne, ou que je les traite directement.
Pour une présentation "en tableau", c'est à l'affichage que fais le tableau (lignes des cases, titres...ext).
Mais c'est pas en "C".

joel76
Membre Relatif
Messages: 230
Enregistré le: 11 Fév 2013, 15:31

par joel76 » 20 Jan 2014, 23:37

Oui, mais pour garder la mise en forme du texte d'une session à l'autre, il faut bien la sauvegarder quelque part.

Valentin03
Membre Relatif
Messages: 429
Enregistré le: 23 Déc 2012, 13:08

par Valentin03 » 21 Jan 2014, 13:12

joel76 a écrit:Oui, mais pour garder la mise en forme du texte d'une session à l'autre, il faut bien la sauvegarder quelque part.

Ah oui, vous considérez le texte comme un objet fini et non comme du matériau.
Une sorte d' HTML en "C".; ça doit pas être facile.

joel76
Membre Relatif
Messages: 230
Enregistré le: 11 Fév 2013, 15:31

par joel76 » 21 Jan 2014, 13:21

Je pense que Rockleadeer voudrait faire un genre de traitement de texte, mais c'est à elle qu'il faut demander !

Avatar de l’utilisateur
Rockleader
Habitué(e)
Messages: 2126
Enregistré le: 11 Oct 2011, 18:42

par Rockleader » 21 Jan 2014, 14:15

joel76 a écrit:Je pense que Rockleadeer voudrait faire un genre de traitement de texte, mais c'est à elle qu'il faut demander !


à lui :zen:


Et oui; pouvoir faire avec le code en c ce que font les raccourcis d'un traitement de texte. Mais ça ne se fait peut être pas...
Cette histoire est entièrement vraie puisque je l'ai inventé du début à la fin !

Avatar de l’utilisateur
ampholyte
Membre Transcendant
Messages: 3940
Enregistré le: 21 Juil 2012, 07:03

par ampholyte » 21 Jan 2014, 14:31

Rockleader a écrit:à lui :zen:


Et oui; pouvoir faire avec le code en c ce que font les raccourcis d'un traitement de texte. Mais ça ne se fait peut être pas...


En gros tu essayes de faire un peu comme emacs ou vim ? Si oui peut-être devrais-tu t'intéresser aux sources de ces logiciels ?

joel76
Membre Relatif
Messages: 230
Enregistré le: 11 Fév 2013, 15:31

par joel76 » 22 Jan 2014, 00:50

Rockleader a écrit:à lui :zen:
Désolé :triste:

Avatar de l’utilisateur
Rockleader
Habitué(e)
Messages: 2126
Enregistré le: 11 Oct 2011, 18:42

par Rockleader » 22 Jan 2014, 16:02

ampholyte a écrit:En gros tu essayes de faire un peu comme emacs ou vim ? Si oui peut-être devrais-tu t'intéresser aux sources de ces logiciels ?



je ne sais pas de quoi tu parles (j'ai pas cherché non plus^^)


Grosso modo

Je veux avec mon programme C faire les action suivantes

Ouvrir un fichier
Ecrire une chaîne Ch dans le fichier
Fermer le Fichier

Ces trois étapes ok c'est facile.

Si dans mon mode graphique j'ouvre le fichier avec un éditeur de texte je verrais apparaître la chaîne écrite normalement à l'endroit ou le curseur était placé.



Admettons maintenant que je veuille faire exactement la même chose; mais lorsque j'ouvrirai mon fichier en mode graphique je veux que le texte ne soit plus en noir mais en rouge par exemple.
Cette histoire est entièrement vraie puisque je l'ai inventé du début à la fin !

Avatar de l’utilisateur
ampholyte
Membre Transcendant
Messages: 3940
Enregistré le: 21 Juil 2012, 07:03

par ampholyte » 22 Jan 2014, 16:28

Rockleader a écrit:je ne sais pas de quoi tu parles (j'ai pas cherché non plus^^)


Grosso modo

Je veux avec mon programme C faire les action suivantes

Ouvrir un fichier
Ecrire une chaîne Ch dans le fichier
Fermer le Fichier

Ces trois étapes ok c'est facile.

On est d'accord

Si dans mon mode graphique j'ouvre le fichier avec un éditeur de texte je verrais apparaître la chaîne écrite normalement à l'endroit ou le curseur était placé.


Lorsque tu fermes un flux ou ton programme, il n'y a plus de notion de curseur.
Donc lorsque tu vas ouvrir ton fichier, tu verras toujours l'intégralité de celui-ci.


Admettons maintenant que je veuille faire exactement la même chose; mais lorsque j'ouvrirai mon fichier en mode graphique je veux que le texte ne soit plus en noir mais en rouge par exemple.


Plusieurs questions me viennent à l'esprit. Est-ce l'utilisateur qui doit choisir la couleur ? Est-ce que tout le texte doit apparaître en rouge ? As-tu regardé le lien que je t'avais fourni sur le format OpenDocument ? Quel doit-être le format de ton fichier ? (pdf, odt, doc, docx, ...)

Lorsque tu écris un texte depuis la console, il faut que tu te dises que cela revient au même que d'écrire un texte dans le notepad (sans couleur, sans mise en page, ...).

Si tu souhaites ajouter des couleurs et autres dans le document, tu dois toi-même (dans le code ou autre) rajouter ce qu'il faut autour du texte, pour que lors de l'ouverture du fichier à l'aide d'un logiciel graphique, il puisse comprendre que le texte est "rouge".

Avatar de l’utilisateur
Rockleader
Habitué(e)
Messages: 2126
Enregistré le: 11 Oct 2011, 18:42

par Rockleader » 22 Jan 2014, 17:48

Si tu souhaites ajouter des couleurs et autres dans le document, tu dois toi-même (dans le code ou autre) rajouter ce qu'il faut autour du texte, pour que lors de l'ouverture du fichier à l'aide d'un logiciel graphique, il puisse comprendre que le texte est "rouge".


On parle donc bien de la même chose; je suis daccord sur le principe.
En revanche le lien que tu m'avais fourni, je n'avais pas vraiment l’impression que l'on détaillait la syntaxe pour "encoder" tout ça.

Plusieurs questions me viennent à l'esprit. Est-ce l'utilisateur qui doit choisir la couleur ? Est-ce que tout le texte doit apparaître en rouge ? As-tu regardé le lien que je t'avais fourni sur le format OpenDocument ? Quel doit-être le format de ton fichier ? (pdf, odt, doc, docx, ...)


Peu importe; ce n'est pas la question que je me pose là, il s'agit simplement d'un exemple. Pour être peut être plus clair.

Si X est le format de fichier; encodera t'on de la même façon la même information sur un X et un X' et surtout ou trouve t'on la syntaxe qui permettra de faire cet encodage par le biais d'un code.

Lorsque tu écris un texte depuis la console, il faut que tu te dises que cela revient au même que d'écrire un texte dans le notepad (sans couleur, sans mise en page, ...).


D'où la problématique ;)



Si je m'intéresse à cette notion c'est parce que ça pourrait éventuellement être intéressant lors de certains projets de ne pas rendre un simple fichier de style bloc note avec tout écrit à la suite.
Cette histoire est entièrement vraie puisque je l'ai inventé du début à la fin !

Avatar de l’utilisateur
ampholyte
Membre Transcendant
Messages: 3940
Enregistré le: 21 Juil 2012, 07:03

par ampholyte » 22 Jan 2014, 22:28

Rockleader a écrit:On parle donc bien de la même chose; je suis daccord sur le principe.
En revanche le lien que tu m'avais fourni, je n'avais pas vraiment l’impression que l'on détaillait la syntaxe pour "encoder" tout ça.


Non en effet, il n'y a que quelques exemples.


Peu importe; ce n'est pas la question que je me pose là, il s'agit simplement d'un exemple. Pour être peut être plus clair.

Si X est le format de fichier; encodera t'on de la même façon la même information sur un X et un X' et surtout ou trouve t'on la syntaxe qui permettra de faire cet encodage par le biais d'un code.

D'où la problématique ;)


L'encodage d'un même texte va diverger suivant si on choisit le format X ou le format X'.

D'ailleurs pour exemple, lorsque tu essayes d'ouvrir un .doc avec openoffice ou un .odt avec word tu risques d'avoir quelques surprises (du moins c'était le cas) =).

Pour connaître la syntaxe d'encodage, il y a deux solutions :
- Soit elle est indisponible car propriétaire (comme .docx par exemple)

- Soit elle est disponible car opensource
Par exemple en téléchargeant les sources de libreoffice ou openoffice, tu devrais pouvoir retrouver ces informations

Si je m'intéresse à cette notion c'est parce que ça pourrait éventuellement être intéressant lors de certains projets de ne pas rendre un simple fichier de style bloc note avec tout écrit à la suite.


Il existe des formats permettant un relecture plus simple :
- xml (comme proposé par fatal_error plus haut)

- csv (cela permettra d'ouvrir le fichier sous la forme d'un tableur)
Code: Tout sélectionner
data1;data2;data3;
1;2;3
5;6;7
3;4;1


- Ton propre format

Doraki
Habitué(e)
Messages: 5021
Enregistré le: 20 Aoû 2008, 11:07

par Doraki » 23 Jan 2014, 19:21

Je comprends pas le problème.

Rockleader, quand tu écris un truc dans un fichier, tu n'écris pas du texte, tu écris une suite de 0 et de 1s.
C'est ton programme qui est capable d'interpréter cette suite en texte de manière à l'afficher à l'écran, et ça s'appelle le codage ascii.

De même, si tu veux manipuler "du textes avec des couleurs", tu ne vas pas écrire du texte en couleur dans un fichier, tu vas y écrire une suite de 0 et de 1s.

Encore une fois ce sera ton programme qui doit interpréter cette suite de manière à t'afficher du texte en couleur sur ton écran. Et ça tu as (comme pour tout le reste) une infinité de manières possibles d'encoder du texte en couleur sous la forme d'une suite de 0 et de 1s.

Si tu n'as pas de contrainte du style "je veux que mon fichier puisse ensuite etre lu par un autre programme que je n'ai pas écrit", c'est toi qui décide comment tu encodes ton information en suite de 0 et de 1s. Tu peux faire comme tu veux. (dans le cas contraire il faut que tu te renseignes sur les formats utilisés comme le dit ampholyte)

Pour se simplifier la vie, il suffirait de quasiment réécrire comment tu stockes ton texte en couleurs dans la mémoire vive quand tu es dans ton éditeur de textes, là t'as pas à réfléchir et tu te compliques pas la vie. D'ailleurs comment tu te le représentes dans ta mémoire ce texte en couleurs ?

 

Retourner vers ϟ Informatique

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 6 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite