# [langage C] gotoxy sous unix?(resolu)

## Admin-galere

Bonjour,

Je présume que certains d'entre vous connaissent le c. et la fonction gotoxy sous borland qui permet de se placer sur l'ecran.

Sous unix, ca se fait comment???  j'ai trouvé la fonction move qui va avec l'include <curses.h>

et aussi tgoto.

Qqun sait il lequel utiliser car ca ne compile pas chez moi.

J'ai pourtant fait un programme de test tres simple genre move(10,10) et printf("toto");

Ca ne creee meme pas d'executable et l'aide du man ne m'aide pas bien pour voir mon erreur. 

Vous connaissez??

----------

## Sleeper

gotoxy c'est pas du C : i.e c'est une bibliotheque specifique a un systeme donne.

Sur unix/linux tu peux jouer qvec ncurses ou alors tripoter carrement les sequences ANSI ...

----------

## Admin-galere

merci sleeper. oui les librairies semblent etre curses et ncurses mais la fonction c bien move ou tgoto??

Ca s'utilise comment? car j'ai voulu tester et ... je suis reste coince!

----------

## Sleeper

Ca fait un moment que j'y aie plus touche .. Ca m'a jamais vraiment emballe .. Mais tu peux regarder ce howto

----------

## cylgalad

Library = bibliothèque en français (cf. tous les dictionnaires franco-anglais de la planète), arrêtez le massacre (et en plus vous me faites radoter !)

----------

## Admin-galere

Arf! un puriste pardon mais c'est vrai que la plupart des mots en infos sont des anglicismes.

Un exemple, utilises tu le mot courriel ou mail?Ppour ma part j'utilise mail car courriel et mél c'est trop moche.

Mais bon on se doit de defendre notre bonne langue française!!

----------

## cylgalad

Courriel sauf si j'ai la flème (comme tout le monde), sinon "mél" c'est un barbarisme honteux (comme "bogue" pour bug, ou "cédérom" pour cd-rom) que je n'utiliserai jamais.

"Library" c'est un faux-ami  :Wink: 

Une librarie c'est "bookshop" : là où on achète des livres, une bibliothèque (library) : là où on entrepose les livres, ce qui correspond très bien aux bibliothèques en informatique.

----------

## Admin-galere

oui on est au moins d 'accord sur le fait que bogue, mél... sont des horreurs!!!

Bon je le ferai plus de dire librairie au lieu de bibliotheque.   :Embarassed: 

ok??

Mais me disputes plus!!!  :Crying or Very sad: 

----------

## theturtle123

hier j'ai acheté un cédérom avec des librairies de C dessus mais en raison d'un bogue j'ai du envoyer un mél à l'auteur...

veuillez m'excuser c'est sorti tout seul  :Twisted Evil: 

----------

## Admin-galere

ha la la ce qu'on se marre!!

Bon on perd notre sujet la: personne ne sait programmer en c sous unix alors??  Vous etes que des administrateurs pas des developpeurs??

----------

## Sleeper

Ca n'a rien a voir avec du C. C'est l'utilisation d'une bibliotheque .. Je t'ai donne une URL vers le Howto, qui est tres bien fait/ tres bien explique ...

Il suffit de lire.

----------

## Admin-galere

ben si c du c qd meme. Si tu veux programmer qqchose de un peu bien presente il faut ca. C'est pas fondamental comme un algo mais bon c une fonction de c.

Je vais retourner voir le howto. merci!!

----------

## Sleeper

 *Admin-galere wrote:*   

> ben si c du c qd meme. Si tu veux programmer qqchose de un peu bien presente il faut ca. C'est pas fondamental comme un algo mais bon c une fonction de c.

 

Encore une fois non. Ce n'est pas une fonction de C. C'est une fonction d'une bibliotheque, que tu appelles dans ton programme C. Elle ne fait pas partie du langage C, et peut etre appellee depuis d'autre langage ...

----------

## Admin-galere

pfiou c ce qui s'appelle est tetu ca!   :Very Happy: 

Bon mister le programmeur. On va dire que tu as raison puisqu'en fait je m'en fous. Mais je voulais juste dire que si on sait progammer en c sous linux on sait ca.

Pour ma part je suis plus windows pour le developpement en c et c++. Sauf si c'est du developpement réseaux (ipc, sockets...) ou on est sous linux, mais pas de presentation a faire.

Je ne vois toujours pas la nuance mais bon je dois etre trop idiote   :Embarassed: 

ps: toute fonction de c fait partie d'une bibliotheque et tu dois include cette bibliotheque pour appeler la fonction d'ou mon incomprehension de ta definition. Mais bon laisse tomber c pas important.   :Rolling Eyes: 

----------

## Sleeper

 *Admin-galere wrote:*   

> Mais je voulais juste dire que si on sait progammer en c sous linux on sait ca.
> 
> 

 

Justement pas forcement ... Je programme sous linux/Un*x depuis qq paires d'annees, et je n'ai eu a utiliser la librairie ncurses qu'une seule fois .. et cela ne m'a pas emballe.

En plus tu peux le faire avec autre chose : par exemple en codant directement des codes ANSI si ton terminal les compren, ou en utilisant une autre bibliotheque http://freshmeat.net/redir/turboc/22623/url_homepage/TurboC, http://users.pandora.be/stes/compiler.html, qui s'appuient sur ncurses ou alors http://space.mit.edu/~davis/slang/ qui fait meme plus que ca ...

 *Quote:*   

> 
> 
> Je ne vois toujours pas la nuance mais bon je dois etre trop idiote  
> 
> ps: toute fonction de c fait partie d'une bibliotheque et tu dois include cette bibliotheque pour appeler la fonction d'ou mon incomprehension de ta definition. Mais bon laisse tomber c pas important.  

 

C'est pas une definition. Le langage C definit un set de mot-cles, plus un set de fonctions standard ( en gros la stdlib). Par contre il ne definit aucune fonction permettant d'aller en position (x,y) d'un ecran .. Ca depend completement de ton systeme.. 

C'est donc implemente dans des bibliotheques annexes. ncurses en est une, mais il y en a d'autres .. et tu peux meme faire la tienne si tu preferes jouer avec les codes des terminaux ou les codes ANSI.. C'est en ca que je dis que cela n'est pas du C.

Cette meme bibliotheque peut etre utilisee dans d'autres langages que le C: C++, Perl, Ruby, ..etc...

----------

## Admin-galere

oui biensur mais bon le c sans les bibliotheques on irait pas loin!!

Bref, dans le howto c plus pour ncurses et donc wmove qui gere en plus les fenetres.

Il me semblait que ct ptet plus simple d'utiliser move (sans les fenetres).

Tu programmes quoi sous unix? car tout est faisable sous windows mais en mieux. non?

----------

## Sleeper

 *Admin-galere wrote:*   

> 
> 
> Tu programmes quoi sous unix? car tout est faisable sous windows mais en mieux. non?

 

Tout ce que l'on me demande de programmer .. Ca va de drivers pour des cartes utilisees dans les telecoms, a un cache software qui tourne sur de _grosses_ machines, en passant par des couches d'adaptation entre 2 protocoles telecoms, des traducteurs automatiques, ..etc.., et pis le soir pour chez moi .. un p'tit driver pour un modem ADSL.

Quand a winblows .. j'prefere pas en parler.

----------

## Admin-galere

Je dois bien avouer que sur ce forum je pensais rencontrer des fans de unix et des anti-win...

Pour ma part j'aime vraiment Win... mais ce n'est pas de la provoc envers les gens du forum. 

Sinon pour programmer un bon vieux cpp builder ou borland ca le fait plus non?? 

Bon ok je me tais et je sors...   :Embarassed: 

Allez chacun ses gouts   :Very Happy: 

----------

## Admin-galere

attends!!!

Je pense que c'etait ca que je cherchais ct dans ton howto sleeper.

 *Quote:*   

> 
> 
> mvaddch() is used to move the cursor to a given point, and then print. Thus, the calls:    
> 
>  move(row,col);    /* moves the cursor to rowth row and colth column */
> ...

 

ca doit faire un placement en un dessin ca non?? c comme un gotoxy suivit d'un printf. enfin ca demande test. Je faisais move(x,y) et ensuite printf.   :Embarassed: 

----------

## Admin-galere

mouais fausse joie ca semble pas marcher comme ca il doit me manquer qqchose genre une biblio... 

Ha la la a quand un c portable pour de bon...

----------

## takezo

```

void gotoxy(int l, int c, char *msg)

{

   printf("\033[%d;%dH%s\n\r", l, c, msg);

}

```

attention que la logique par rapport à gotoxy est inversée, d'abor ligne (y), puis colonne (x).

sinon pour utiliser ncurses tu as surement oublier de linker la bibliothèque au moment de la compilation 

```

gcc -lncurses toto.c

```

----------

## Admin-galere

wouaw merci je n'ai pas encore essaye ton conseil mais j'avais pas du tout pense a linker comme tu le dis!

Merci a toi! je te tiens au courant...

edit:

puis je me permettre de te demander ce que sont:

 *Quote:*   

> 
> 
> \033[%d;%dH%s\n\r
> 
> 

 

je ne vois pas trop...   :Embarassed: 

----------

## takezo

Bon, je réponds à la fois à ton post et à ton pm d'un coup ... 

la première méthode que je t'ai donnée n'utilise pas ncurses mais les codes ansi, ce qui est une manière standard de mettre en forme des affichages (positionnement, couleurs ... ) 

c'est normal que l'exemple que tu m'as envoyé ne fonctionne pas, tu dois tout mettre exactement comme moi. 

bon, pour les détails : \033 correspond à ESC, et suivit du crochet ouvrant [ , on indique une séquence ansi. 

la séquence qu'on utilise ici est celle pour le positionnement, autrement dit : 

[code]

\033[4;5Htoto 

[code]

affichera toto sur la 4e ligne, 5e colonne.

je ne t'ai pas mis d'exemple avec ncurses pcq j'ai jamais bcp joué avec et le site cité plus haut explique ça très bien.

tu as du mal comprendre le linkage aussi, ce n'est pas une étape avant la compilation, c'est en même temps (du point de vue de la ligne de commande en tout cas)

donc en complet : 

[code]

gcc -lncurses -o toto toto.c

[/code]

ps : pour les codes ansi : http://www.bluesock.org/~willg/dev/ansi.html

----------

## Admin-galere

oh merci!!!

En fait oui j'ai prefere te demande plutot que de faire des betises. Donc les deux choses que tu m'as dites sont deux manieres differentes.

Donc imaginons que je veuille pas trop utiliser les codes ansi, je peux faire marcher en mettant #include <ncurses.h> et en utilisant move(y,x);

et pour que ca marche il faut faire le linkage comme tu me l'as expliqué. J'ai bien compris?

ps: desole d'avoir repondu si tard mais j'avais une coupure internet...   :Embarassed: 

----------

## Admin-galere

en fait j'ai trouvé un exemple qui affiche comme je voudrai et en fait, il fallait mettre initscr(); pour demarrer le mode ncurses. 

Ha la la c'etait sur le site de sleeper mais etant assez dense je ne l'ai pas vu tout de suite!!

----------

