tgetstr et tparm [C] - C - Programmation
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.
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
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+,
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
?
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
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 ?