Retour chariot en C

Résolu
neo24 -  
 neo24 -
Bonjour, quelqu'un saurait comment quand l'utilisateur saisie une phrase et qu'il tape sur "Entree" ne pas fermer le programme en cours et juste revenir a la ligne.
La phrase est mise dans une chaîne de caractère en C mais je vous avouerais que n'ai absolument aucune idée de comment procéder.

Attention, je ne demande pas forcément la réponse mais au moins une ou plusieurs pistes ou un site ou je puisse trouver la réponse.

Merci d'avance.
Configuration: Windows XP
Firefox 2.0.0.14

8 réponses

  1. mype Messages postés 2459 Date d'inscription   Statut Membre Dernière intervention   437
     
    tu pourrais posté aussi ton code pour qu'on voit mieux le probleme...
    0
    1. neo24
       
      Le problème survient lors de la saisie de la description de l'intervention enfin si on peut appelé sa un problème car
      tout ce passe bien mais le seul soucie vient quand je veut taper "Entree" la ca me ferme le programme alors que je veux juste faire un retour a la ligne.

      #include <stdio.h>
      #include <stdlib.h>

      int main(int argc, char *argv[])
      {
      FILE * fichier = NULL;

      int intervention[6],i;
      int priorite[6],z=0;
      char technicien[30],t=0;
      char commentaire[10000];

      fichier = fopen("beta.txt","a");
      if(fichier != NULL){
      for (i=0;i<3;i++)
      {
      printf("\nVeuillez saisir un numéro d'intervention :");
      scanf("%d",&intervention[i]);
      fprintf(fichier,"Numéro d'intervention : %d\n",intervention[i]);

      printf("Veuillez saisir la priorité de cette intervention :");
      scanf("%d",&priorite[z]);
      fprintf(fichier,"Priorite de l'intervention : %d\n",priorite[z]);
      z++;
      getchar();
      printf("Veuillez saisir le nom du technicien en charge :");
      fgets(technicien,30,stdin);
      fprintf(fichier,"Numéro du technicien : %d\nNom du technicien : %s",t,technicien);
      t++;
      printf("Description de l'intervention :\n"); <--------- Le problème est ici
      fgets(commentaire,10000,stdin);

      fprintf(fichier,"Description de l'intervention:\n %s\n\n",commentaire);

      }
      fclose(fichier);
      }
      else
      printf("Impossible d'ouvrir le fichier");
      return 0;
      }
      0
  2. mype Messages postés 2459 Date d'inscription   Statut Membre Dernière intervention   437
     
    rajoute
    getchar();
    apres
    fprintf(fichier,"Description de l'intervention:\n %s\n\n",commentaire); 
    0
  3. Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 331
     
    pour lire sans s'arréter au return, il faut utiliser une autre fonction que scanf(). getchar ou gets etc.
    0
  4. neo24
     
    Ok Char Snipeur mais alors peut-tu m'aiguiller sur une autre fonction que celle utilisé.

    Ps : mype,j'ai essayé la fonction getchar() mais le problème c'est que maintenant je ne peut plus quitter et la ligne saisie aprés le retour a la ligne n'ai pas enregistré dans mon fichier beta.txt

    Cordialement
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 331
     
    hum, c'est pas si simple. Pour e répondre mieux, il faut que tu me dises : comment le programme sais si l'utilisateur a fini de taper tout ce qu'il avait à taper ?
    Selon ta réponse, plusieurs stratégies sont possibles.
    0
  7. mype Messages postés 2459 Date d'inscription   Statut Membre Dernière intervention   437
     
    ok je vois ce que tu veux faire mais je suis pas sur qu'une fonction de ce type existe deja en C ...sinon comment tu vas faire pour t'arreter de lire si tu ne peux pas t'arreter au retour chariot

    ce que tu peux faire c'est au lieu de lire la phrase en entier tu lis caractere par caractere jusqu'a ce qu'un caractere precis soit tapés par exemple le point "." avec une boucle while le retour chariot sera pris en compte
    0
  8. neo24
     
    Donc actuellement dès que l'utilisateur "landa" tape la description de l'intervention puis appuis sur entree, cela ferme le programme et l'enregistre dans un fichier nommé "beta.txt".
    Aprés la manière dont je souhaiterai que l'utilisateur quitte le programme,j ai pas d'obligation.
    La manière la plus simple sera la meilleur.
    0
  9. mype Messages postés 2459 Date d'inscription   Statut Membre Dernière intervention   437
     
    declare
    char c;
    int j;

    ensuite essaye ça
    j=0;
    while((c=fgetc(stdin))!='.')
    {
    commentaire[j]=c;
    j++;
    }
    fprintf(fichier,"Description de l'intervention:\n %s\n\n",commentaire); 
    0
    1. neo24
       
      Merci beaucoup mype,
      Ca marche du feu de dieu.

      A chaque fois que j'ai eu une question a posé sur ce forum, on m'a répondu très vite et efficacement.
      Au moins un forum où on peut trouver des réponses constructives


      Merci a tous et tout particulièrement a mype.
      0