Pauses pendant un programme en C

Résolu/Fermé
cucrapock Messages postés 16 Date d'inscription vendredi 18 novembre 2005 Statut Membre Dernière intervention 12 mai 2007 - 20 juil. 2006 à 17:12
tchsimons Messages postés 191 Date d'inscription samedi 3 mai 2008 Statut Membre Dernière intervention 24 novembre 2012 - 15 juin 2008 à 20:12
Bonjour,

comment peut on faire pour marquer une pause dans un programme en langage C. J'ai essayé les printf et les scanf mais ils ont tendance à ne pas être pris en compte lorsqu'il se trouve, par exemple, juste avant une erreur de segmentation (que l'on cherche à repérer d'ailleurs...).

D'avance merci
A voir également:

2 réponses

mamiemando Messages postés 33320 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 17 octobre 2024 7 798
20 juil. 2006 à 19:46
Pour faire une pause (ie attendre que l'utilisateur presse une touche) il suffit d'utiliser l'instruction getchar() :
#include <stdio.h>

int main(){
  printf("presse une touche !\n");
  getchar();
  printf("fin\n");
  return 0;
}

Pour repérer l'endroit et la cause d'une erreur de segmentation le mieux c'est d'utiliser un debugger. Compile les fichiers .c avec l'option -g (si tu utilises gcc), puis lance gdb :
gcc -g -W -Wall plop.c -o plop.exe
gdb plop.exe

Dans gdb lance le programme en mettant derrière r les eventuels paramètres pris par ton code :
r param1 param2 ....

Inévitablement la seg fault va se déclencher. Il suffit d'afficher la pile d'appel pour savoir exactement où le programme à planté (et pourquoi), en tapant :
bt

Bonne chance
1
cucrapock Messages postés 16 Date d'inscription vendredi 18 novembre 2005 Statut Membre Dernière intervention 12 mai 2007 4
21 juil. 2006 à 10:25
Merci beaucoup pour l'info :)
0
tchsimons Messages postés 191 Date d'inscription samedi 3 mai 2008 Statut Membre Dernière intervention 24 novembre 2012 14
15 juin 2008 à 20:12
j'ai le meme probleme mais moi je voudrais qeu le boutton soi pris en compte que si l'utilisateur frappe sinon le programme continu normalement
0