Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1636 connectés 

  FORUM HardWare.fr
  Programmation
  C

  [C] tgetstr et tparm

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C] tgetstr et tparm

n°2216255
archseven
Posté le 15-01-2014 à 22:53:58  profilanswer
 

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 ?

mood
Publicité
Posté le 15-01-2014 à 22:53:58  profilanswer
 

n°2216256
olivthill
Posté le 16-01-2014 à 00:53:03  profilanswer
 

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.

n°2216259
archseven
Posté le 16-01-2014 à 01:56:46  profilanswer
 

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

n°2216286
gilou
Modérateur
Modzilla
Posté le 16-01-2014 à 10:59:55  profilanswer
 

Ç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é!  --
n°2216335
archseven
Posté le 16-01-2014 à 18:38:35  profilanswer
 

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
?

n°2216336
archseven
Posté le 16-01-2014 à 18:56:58  profilanswer
 

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

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  [C] tgetstr et tparm

 

Sujets relatifs
mini-projet en language C[C/OpenGl] Entretien téléphonique
While en C Parc d'attraction en C
[C++] Questions sur "new" et les arguments d'un constructeurAide pour un petit programme en C
Erreur compilation sur prog en CProgrammation en C
[C] Programmer "Jeu des batons" par récursivité[C]Détection de fin de fichier...
Plus de sujets relatifs à : [C] tgetstr et tparm


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR