[c] divers problèmes

divers problèmes [c] - Programmation

Marsh Posté le 15-07-2002 à 22:23:28    

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

Reply

Marsh Posté le 15-07-2002 à 22:23:28   

Reply

Marsh Posté le 15-07-2002 à 22:35:09    


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:  

Reply

Marsh Posté le 15-07-2002 à 22:36:12    

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

Reply

Marsh Posté le 15-07-2002 à 22:39:10    

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

Reply

Marsh Posté le 15-07-2002 à 22:49:38    

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
Reply

Marsh Posté le 18-07-2002 à 00:18:51    

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
Reply

Marsh Posté le 18-07-2002 à 00:27:34    

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

Reply

Sujets relatifs:

Leave a Replay

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