Critere d'arret boucle while

developvbdebut Messages postés 476 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 2 juin 2012 - 24 avril 2006 à 08:59
turnerom Messages postés 492 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 12 janvier 2012 - 27 avril 2006 à 09:41
Bonjour tout le monde

J'ai un probleme avec le critere d'arret d'une boucle while.

je ne sais pas quoi mettre, je souhaite que la boucle s'arrette quand on entre saise vide dans section.

Voici le code:

while(c.section!=0){
printf("Entrer le numero de la section\n");
scanf("%d",&c.section);


fwrite( &c.section, sizeof(int) ,sizeof(c.section), fich );


printf("Entrer le nom\n");
scanf("%s",&c.nom);


fwrite( &c.nom, sizeof(char) ,sizeof(c.nom), fich );


printf("Entrer le Prenom\n");
scanf("%s",&c.prenom);


fwrite( &c.prenom, sizeof(char) ,sizeof(c.prenom), fich );
}

cwhile(c.section==-1){
printf("Entrer le numero de la section\n");
scanf("%d",&c.section);


fwrite( &c.section, sizeof(int) ,sizeof(c.section), fich );


printf("Entrer le nom\n");
scanf("%s",&c.nom);


fwrite( &c.nom, sizeof(char) ,sizeof(c.nom), fich );


printf("Entrer le Prenom\n");
scanf("%s",&c.prenom);


fwrite( &c.prenom, sizeof(char) ,sizeof(c.prenom), fich );
}

Pouvez vous m'aider.

Merci

Cordialement

A bientôt
A voir également:

10 réponses

meech Messages postés 209 Date d'inscription vendredi 11 avril 2003 Statut Membre Dernière intervention 14 août 2007
24 avril 2006 à 11:14
Salut,

Vérifier si le caractère c.section est un retour chariot, c'est-à-dire s'il a la valeur 13.

Ciao.
0
developvbdebut Messages postés 476 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 2 juin 2012 1
24 avril 2006 à 12:05
Rebonjour tout le monde

Desolé, mai notre enseignent nous ne a pas expliqué le retour chariot.

Pouriez vous me l'expliqué.

Merci

Cordialement

A bientôt
0
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
24 avril 2006 à 12:58
code ASCII recu lorsque la touche [ENTER] est tapée
vaut 13 (0x0D) CARRIAGE RETURN (CR)

Dans certain cas mappé en 10 (0x0A) pour LINE FEED (LF)

Et des fois on a les 2 CR LF 0xD 0xA

Il s'agit également d'un retour à la ligne
les différences dépendent des choix d'implémentation (DOS, UNIX, Windows)
0
developvbdebut Messages postés 476 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 2 juin 2012 1
24 avril 2006 à 19:18
Bonsoir tout le monde

donc, c'est certainement pour ca que lorsque je tape un nombre dans c.section que ca m'envois des symbol dans mon fichier texte.

Le probleme viens de là.

Que puis je faire pour y remedier svp.

Merci

Cordialement

A bientôt
0

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

Posez votre question
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
25 avril 2006 à 09:04
printf("Entrer le nom\n");
scanf("%s",&c.nom);

c'est pas bon

nom doit être déclaré comme cela :
char nom[64];

récupérer comme cela :
printf("Entrer le nom\n");
scanf("%s",c.nom);

écrit comme cela :
fwrite( c.nom, 64*sizeof(char) ,1, fich );
0
developvbdebut Messages postés 476 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 2 juin 2012 1
26 avril 2006 à 09:12
Bonjour tout le monde

ok, je vais le changer

Pour mon critere d'arret comment puis je faire.

Merci

Cordialement

A bientôt
0
turnerom Messages postés 492 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 12 janvier 2012 1
27 avril 2006 à 09:35
A mon avis tu met tout simplement ca (en reprenant les idées de tout le monde) :

char nom[64], prenom[64];
...
while(strcmp(c.section,"") != 0){
  printf("Entrer le numero de la section\n");
  scanf("%d",&c.section);

  fwrite( &c.section, sizeof(int) ,1, fich );

  printf("Entrer le nom\n");
  scanf("%s",c.nom);

  fwrite( c.nom, sizeof(char)*64 ,1, fich );

  printf("Entrer le Prenom\n");
  scanf("%s",c.prenom);

  fwrite( c.prenom, sizeof(char)*64 ,1, fich );
}

TuRn3r
0
turnerom Messages postés 492 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 12 janvier 2012 1
27 avril 2006 à 09:38
Oups désolé, j'ai oublié la condition de sortie  :





char nom[64], prenom[64];


...

while(1){
  printf("Entrer le numero de la section\n");
  scanf("%d",&c.section);
 
  if (strcmp(c.section,"") != 0)
    break;

  fwrite( &c.section, sizeof(int) ,1, fich );

  printf("Entrer le nom\n");
  scanf("%s",c.nom);

  fwrite( c.nom, sizeof(char)*64 ,1, fich );

  printf("Entrer le Prenom\n");
  scanf("%s",c.prenom);

  fwrite( c.prenom, sizeof(char)*64 ,1, fich );
}

TuRn3r
0
turnerom Messages postés 492 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 12 janvier 2012 1
27 avril 2006 à 09:40
Bon faut que j'aprenne a ecrire moi

  if (strcmp(c.section,"") != 0)
est bien sur a remplacer par:
  if (strcmp(c.section,"") == 0)

TuRn3r
0
turnerom Messages postés 492 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 12 janvier 2012 1
27 avril 2006 à 09:41
Bon je retourne voila, je retourne me coucher

while(1){

  printf("Entrer le numero de la section\n");
  scanf("%d",&c.section);
 
  if (c.section== 0)
    break;

  fwrite( &c.section, sizeof(int) ,1, fich );

  printf("Entrer le nom\n");
  scanf("%s",c.nom);

  fwrite( c.nom, sizeof(char)*64 ,1, fich );

  printf("Entrer le Prenom\n");
  scanf("%s",c.prenom);

  fwrite( c.prenom, sizeof(char)*64 ,1, fich );
}

TuRn3r

TuRn3r
0
Rejoignez-nous