[langage C] Prédéfinir un début de saisie

[Fermé]
Signaler
-
Messages postés
1867
Date d'inscription
vendredi 15 avril 2005
Statut
Membre
Dernière intervention
24 juillet 2014
-
Bonjour,

je souhaite faire saisir à un utilisateur un mot, qui commencera obligatoirement par "bac" par exemple.

soit il ne saisie que le mot et quand je fait un printf j'affiche baclemot
soit quand l'utilisateur doit saisir le mot, dès le début il voit bac.

Comment faire cela ? La première solution est peu être plus simple ?

4 réponses

Messages postés
1867
Date d'inscription
vendredi 15 avril 2005
Statut
Membre
Dernière intervention
24 juillet 2014
338
printf("bac");
scanf("%s" , suiteMot);

strcpy(mot,"bac");
strcpy(mot + strlen("bac") , suiteMot);


Et tu obtiens le mot complet dans mot non ? Bon attention, il faut tout bien allouer, tu peux utiliser des fgets() c'est mieux...
Messages postés
9688
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
2 octobre 2020
1 314
je croi qu'il vau mieux utiliser l'opérature de concaténation (strcat() je croi) plutot que strcpy()
j'ai du mal avec scanf, mais un 'scanf("bac%s",lemot)' ne fonctionnerai til pas ?
Messages postés
1867
Date d'inscription
vendredi 15 avril 2005
Statut
Membre
Dernière intervention
24 juillet 2014
338
Tu as raison :)
je viens de tester

scanf("bac%s",lemot);

cela ne fonctionne pas, je rentre dans une boucle infini
Messages postés
1867
Date d'inscription
vendredi 15 avril 2005
Statut
Membre
Dernière intervention
24 juillet 2014
338
En tout cas chez moi ça marche bien, mais il faut penser à vider le buffer.

 
#include <stdio.h>
#include <string.h>

int main() {
  char chaine[20];
  int ret;
  char c;

  do {
    while( (c=getchar())!='\n' && c!=EOF ); 
    printf("Veuillez entrer un mot commencant par bac\n");
    ret = scanf("bac%s",chaine);
  } while (ret != 1);

  printf("Vous avez entre bac%s\n",chaine);

  return 0;
}