[C] tgetstr et tparm

tgetstr et tparm [C] - C - Programmation

Marsh Posté le 15-01-2014 à 22:53:58    

bonjour,
 
je voudrais savoir récuperer le nonbre de lignes du terminal avec tegetstr et tparm mais quand j'affiche le retour de tegetstr ca me fait un segfault
 
comment faire ?

Reply

Marsh Posté le 15-01-2014 à 22:53:58   

Reply

Marsh Posté le 16-01-2014 à 00:53:03    

Un segfault est causé la plupart du temps par un pointeur qui va a une mauvaise adresse.
 
Sans voir le programme, on ne peut pas beaucoup aider, mais il est probable qu'il manque des réservations adéquates de zones mémoires pour stocker le résultat, et/ou un soucis au niveau du pointeur sur le pointeur pour le deuxième paramètre de tgetstr.

Reply

Marsh Posté le 16-01-2014 à 01:56:46    

bin la partie du programme qui est censé donné le nombre de lignes est la suivante (je ne connais pas l'option pour mettre le compteur de lignes et j'écris le code brute de mémoire mais je sais qu'il est tel que ci dessous):
 
#include <term.h>
#include <ncurses/curses.h>
 
int       main()
{
char *area;
char *resu;
 
if ((resu = malloc(sizeof(char) * 512)) == NULL || (area = malloc(sizeof(char) * 512)) == NULL)
return (1);
resu = tgetstr("li", &area);
my_putstr(resu);
}
 
le segfault survient quand je fais le my_putstr car tgetstr semble renvoyer null c'est peut-etre le deuxieme argument dont j'envoie l'adrresse qui en est la cause, je n'ai en effet pas compris à quoi servait ce remplisage de char **.
dsl pour la mise en page...
 
merci

Reply

Marsh Posté le 16-01-2014 à 10:59:55    

Ça marche pas parce que tu n'as pas d'abord fait un appel a tgetent, et donc aucune info de terminal n'a été chargée en mémoire pour être exploitée par tgetstr.
http://c-faq.com/osdep/sd22.html
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 16-01-2014 à 18:38:35    

en effet ca ne marchait pas car je n'avais pas fais appel a tgetent mais aussi car pour le nombre de lignes il faut utiliser tgetnum, mais je n'ai pas le droit d'utililser tgetnum....
 
du coup je voudrais savoir si il y a un moyen de recuperer le nombres de lignes du terminal avec les fonctions suivantes
• ioctl
• tcsetattr
• tcgetattr
• tgetent
• tgoto
• tputs
• tgetstr
• tparm
?

Reply

Marsh Posté le 16-01-2014 à 18:56:58    

ah j'ai trouvé avec ioctl :
 
#include <termios.h>
#include <sys/ioctl.h>
#include <stdio.h>
 
int   main()
{
struct winsize ws;
 
ioctl(1, TIOCGWINSZ, &ws);
printf("%d\n", ws.ws_row);
return (0);
}
 
Merci


Message édité par archseven le 16-01-2014 à 18:57:22
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed