Questions souvent posées (FAQ)
Page 1 sur 1
Questions souvent posées (FAQ)
J'aimerais savoir comment on peut obtenir les dimensions d'une console (= sa taille) via une fonction (portable ou non) et comment les afficher ?!
J'ai entendu parlé de la fonction suivante ...
gettextinfo()
... qui fonctionnerait avec une structure ...
struct text_info ti;
... mais je ne sais pas m'en servir !
Je te renvoie donc aux liens cités dans le premier message de ce forum (CONIO ressources).
Bon ben je pense avoir trouvé comment enregistrer les dimensions dans ti :
Ta première idée était la bonne :
En fait si je demandais cela, c'est que je voulais faire une fonction qui centre du texte. J'ai essayé de coder la version bêta avec ce que tu m'as donné, mais cela ne marche pas. J'ai déjà corrigé pas mal d'erreurs mais pour les quelques qui restent, je sèche !
centrer("Texte");
et en renvoyant un message d'erreur dans la compilo lorsque espace est négatif (enfin si c'est possible) !!!
Je rappelle que l'affectation se fait de droite à gauche. En langage algorithmique, le symbole de l'affectation est '<-'
"Mettre la valeur 2 dans la variable a."
Tu veux probablement dire
Pour centrer un texte entre MIN et MAX, sur une ligne, on fait :
x = MIN + ((MAX - MIN - len(texte))/2)
x état le la position du début du texte.
Ici, MIN valant 0, on simplifie en
x = 0 + ((MAX - 0 - len(texte))/2)
soit
x = (MAX - len(texte))/2
Oui mais je tiens à utiliser la manière avec laquelle j'ai procédé !
J'ai corrigé l'opération (je ne sais même pas pourquoi j'avais fait comme ça !) mais apparemment il y a un problème avec l'appel de la fonction !
Sinon est-t-il possible de faire les améliorations que j'ai cité dans mon dernier message ?
Pourquoi un paramètre char *texte[] pour un simple texte ? Il suffit de mettre
Ceci fonctionne :
Et pour le message d'erreur, c'est pas possible ?
Quel message d 'erreur ?
Ben le message d'erreur serait que lorsque espace est négatif, le compilo renvoie un message d'erreur ! Sinon, si ce n'est pas possible, je peux faire un truc qui empêche le centrage si espace est négatif :
Je ne comprend pas très bien. Pourquoi espace serait négatif ? Parce que le texte est tellement grand qu'il ne tient pas dans la largeur ? Il faudrait peut être s'en préoccuper avant :
J'ai entendu parlé de la fonction suivante ...
gettextinfo()
... qui fonctionnerait avec une structure ...
struct text_info ti;
... mais je ne sais pas m'en servir !
Je te renvoie donc aux liens cités dans le premier message de ce forum (CONIO ressources).
Bon ben je pense avoir trouvé comment enregistrer les dimensions dans ti :
- Code:
struct text_info ti;
gettextinfo(&ti);
- Code:
/* in conio2.h */
struct text_info
{
unsigned char screenheight; /* hauteur de l'écran */
unsigned char screenwidth; /* largeur de l'écran */
};
struct text_info *ti;
gettextinfo( ti );
cprintf ("Dimensions de l'écran : %d x %d\r\n", ti->screenwidth, ti->screenheight);
Ta première idée était la bonne :
- Code:
struct text_info ti;
gettextinfo( &ti );
cprintf( "Dimensions de l'écran : %d x %d\r\n", ti.screenwidth, ti.screenheight );
En fait si je demandais cela, c'est que je voulais faire une fonction qui centre du texte. J'ai essayé de coder la version bêta avec ce que tu m'as donné, mais cela ne marche pas. J'ai déjà corrigé pas mal d'erreurs mais pour les quelques qui restent, je sèche !
- Code:
#include <stdio.h>
#include <stdlib.h>
#include <conio2.h>
void centrer (char *texte[])
{
long longueur = 0;
long espace = 0;
int i = 0;
struct text_info ti;
gettextinfo (&ti);
longueur = strlen (*texte);
espace = ti.screenwidth - longueur;
for (i = 0; i < espace / 2; i++)
{
printf (" ");
}
printf ("%s", *texte);
}
int main (void)
{
char texte[] = "Texte";
centrer (&texte);
getch ();
return 0;
}
centrer("Texte");
et en renvoyant un message d'erreur dans la compilo lorsque espace est négatif (enfin si c'est possible) !!!
Ceci n'a aucun sens. Une expression n'est pas une L-value (partie gauche d'un affectation).
- Code:
ti.screenwidth - longueur = espace;
Je rappelle que l'affectation se fait de droite à gauche. En langage algorithmique, le symbole de l'affectation est '<-'
- Code:
a <- 2
"Mettre la valeur 2 dans la variable a."
Tu veux probablement dire
- Code:
espace = ti.screenwidth - longueur;
Pour centrer un texte entre MIN et MAX, sur une ligne, on fait :
x = MIN + ((MAX - MIN - len(texte))/2)
x état le la position du début du texte.
Ici, MIN valant 0, on simplifie en
x = 0 + ((MAX - 0 - len(texte))/2)
soit
x = (MAX - len(texte))/2
Oui mais je tiens à utiliser la manière avec laquelle j'ai procédé !
J'ai corrigé l'opération (je ne sais même pas pourquoi j'avais fait comme ça !) mais apparemment il y a un problème avec l'appel de la fonction !
Sinon est-t-il possible de faire les améliorations que j'ai cité dans mon dernier message ?
Pourquoi un paramètre char *texte[] pour un simple texte ? Il suffit de mettre
- Code:
void centrer (char *texte)
- Code:
void centrer (char const *texte)
Ceci fonctionne :
- Code:
#include <stdio.h>
#include <string.h>
#include <conio2.h>
void centrer (char const *texte)
{
long longueur = 0;
long espace = 0;
int i = 0;
struct text_info ti;
gettextinfo (&ti);
longueur = strlen (texte);
espace = ti.screenwidth - longueur;
for (i = 0; i < espace / 2; i++)
{
printf (" ");
}
printf ("%s", texte);
}
int main (void)
{
char texte[] = "Texte";
centrer (texte);
return 0;
}
Et pour le message d'erreur, c'est pas possible ?
Quel message d 'erreur ?
Ben le message d'erreur serait que lorsque espace est négatif, le compilo renvoie un message d'erreur ! Sinon, si ce n'est pas possible, je peux faire un truc qui empêche le centrage si espace est négatif :
- Code:
fonction
{
récupèration des dimensions de la console;
calcul de la longueur du texte;
calcul de l'espace libre;
si espace est inférieur à 0
{
centrage
}
}
Je ne comprend pas très bien. Pourquoi espace serait négatif ? Parce que le texte est tellement grand qu'il ne tient pas dans la largeur ? Il faudrait peut être s'en préoccuper avant :
- Code:
fonction
{
récupèration des dimensions de la console;
calcul de la longueur du texte;
si longueur du texte est inférieur à largeur console
{
calcul de l'espace libre;
centrage
}
sinon
{
ca va mal...
}
}
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|