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

  FORUM HardWare.fr
  Programmation

  [c] divers problèmes

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[c] divers problèmes

n°176694
chaica
Posté le 15-07-2002 à 22:23:28  profilanswer
 

Tout d'abord je n'arrive pas à passer en malloc la string entree, j'ai un segmentation fault si j'essaie.
 Ensuite j'ai placé un fgets en fin de programme pour demander de presser une touche avant de quitter.  
Or il saute cette étape alors qu'avant le scanf il le prend en compte. Bizarre...
Si quelqu'un a une idée
 
 
 

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. int main()
  5. {
  6. char* essai  = (char*)malloc(1000 * sizeof(char));
  7. char entree[30];
  8. char* resultat = (char*)malloc(sizeof(char));
  9. char car;
  10. FILE *stock;
  11. int i=0;
  12. int c,pos;
  13. stock = fopen("/home/chaica/agenda.fic","rt" );
  14. while ((c = fgetc(stock)) != EOF)
  15. {
  16.  essai[i] = c;
  17.  i = i+1;
  18. }
  19. printf("entre ta recherche\n" );
  20. scanf("%s",&entree);
  21. resultat = strstr(essai,entree);
  22. pos = resultat-essai;
  23. i = 0;
  24. do
  25. {
  26.  car = essai[pos+i];
  27.  printf("%c",car);
  28.  i = i+1;
  29. }
  30. while (car != '\n');
  31. printf("recherche effectuee\nAppuyer sur une touche pour continuer\n" );
  32. fgets(essai,10,stdin);
  33. fclose(stock);
  34. return 0;
  35. }


 
CHaiCA

mood
Publicité
Posté le 15-07-2002 à 22:23:28  profilanswer
 

n°176699
smaragdus
whores, drugs & J.S. Bach
Posté le 15-07-2002 à 22:35:09  profilanswer
 


1) Pour la chaine entree :

Code :
  1. char* entree = (char*)malloc(1000 * sizeof(char));
  2. scanf("%s",entree);


 
doit fonctionner.
 
2) Ensuite : A quoi sert d'allouer un char pour resultat puisque c'est un pointeur ?  
 
3) 1 Malloc => 1 free !!!!!!!!  :fou:  

n°176702
smaragdus
whores, drugs & J.S. Bach
Posté le 15-07-2002 à 22:36:12  profilanswer
 

Pour le reste, ça fait tellement longtemps que j'ai plus fait de mode console que je ne peux pas t'aider.

n°176703
kjus
Posté le 15-07-2002 à 22:39:10  profilanswer
 

pour lorsqu'il saute le fgets, en fait celui-ci se prend le \n, donc il faut remplacer le fgets par exemple par :
if (getchar()=='\n';)
   getchar;
 
voila

n°176705
chaica
Posté le 15-07-2002 à 22:49:38  profilanswer
 

Merci à tous les deux.
Je vais bien mettre des free, pas de problèmes.
kjus : je pige pas quel \n fgets se prenait? celui du printf?
 
CHaiCA


Message édité par chaica le 15-07-2002 à 22:50:43
n°178304
Musaran
Cerveaulté
Posté le 18-07-2002 à 00:18:51  profilanswer
 

Pour faire une pause, utilises ça:

Code :
  1. fflush(stdin) ; //vide le tampon d'entrée
  2. getchar() ; //attendre 1 char

Le vidage est quasi-obligatoire car le système d'E/S est un peu bogué...


---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone
n°178308
chaica
Posté le 18-07-2002 à 00:27:34  profilanswer
 

musaran : merci, le problème est reglé, ca roule maintenant.
 
CHaiCA


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

  [c] divers problèmes

 

Sujets relatifs
Problémes avec form_load()Problêmes avec sql serveur et le format text
Problemes de raffraichissement[delphi] Problemes avec DBCtrlGrid
recherche divers contrôles graphiques pr IHM sous VB[PHP] 2 problèmes pour le prix d'1
Problemes d'applet (class not found) ...J'ai des problemes avec mes tableaux en HTML
Problèmes d'affichage avec les pseudo-frames[PHP+ORACLE+XSU OCI8] Problèmes de Doc.
Plus de sujets relatifs à : [c] divers problèmes


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