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

Fermé
djim - 5 juil. 2007 à 11:29
ekra Messages postés 1870 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 24 juillet 2014 - 5 juil. 2007 à 14:42
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 ?
A voir également:

4 réponses

ekra Messages postés 1870 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 24 juillet 2014 342
5 juil. 2007 à 12:01
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...
0
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
5 juil. 2007 à 12:05
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 ?
0
ekra Messages postés 1870 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 24 juillet 2014 342
5 juil. 2007 à 12:24
Tu as raison :)
0
je viens de tester

scanf("bac%s",lemot);

cela ne fonctionne pas, je rentre dans une boucle infini
0
ekra Messages postés 1870 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 24 juillet 2014 342
5 juil. 2007 à 14:42
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;
}
0