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.

8 réponses

mype Messages postés 2435 Date d'inscription   Statut Membre Dernière intervention   437
 
tu pourrais posté aussi ton code pour qu'on voit mieux le probleme...
0
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
mype Messages postés 2435 Date d'inscription   Statut Membre Dernière intervention   437
 
rajoute
getchar();
apres
fprintf(fichier,"Description de l'intervention:\n %s\n\n",commentaire); 
0
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
pour lire sans s'arréter au return, il faut utiliser une autre fonction que scanf(). getchar ou gets etc.
0
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
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
mype Messages postés 2435 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
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
mype Messages postés 2435 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
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