begin process at 2012 05 30 17:02:55
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Débutant(e)

 > 

scanf, comment ne pas ignorer les espaces ?


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

scanf, comment ne pas ignorer les espaces ?

lundi 28 décembre 2009 à 13:28:14 | scanf, comment ne pas ignorer les espaces ?

cool2source

bonjour,
Pour rendre mon petit programme un peu plus esthétique, je souhaite savoir s'il existe une fonction semblable à scanf() mais qui prendrait en compte les espaces lors de la saisie d'une chaine de caractères.
je suis bob = jesuisbob

Actuellement pour rendre le texte plus compréhensible, je remplace les espaces par des "_" lors de la saisie.
Si vous pouviez m'aiguiller vers une éventuelle solution...

Merci ;)

lundi 28 décembre 2009 à 14:23:58 | Re : scanf, comment ne pas ignorer les espaces ?

CptPingu

Administrateur CodeS-SourceS
scanf est tout à fait capable de "comprendre" les espaces :)

Ce n'est pas trivial, mais il faut jouer avec les propriétés de celui-ci. Un exemple voudra mieux qu'une explication:

Code C/C++ :
#include <stdio.h>
#include <stdlib.h>

#define LENGTH 65
#define str(x) # x
#define xstr(x) str(x)

int main(void)
{
  int rc;
  char buff[LENGTH + 1] = "";

  printf("Enter a string with spaces: ");
  fflush(stdout);
  rc = scanf("%" xstr(LENGTH) "[^\n]%*[^\n]", buff);
  if (!feof(stdin))
    getchar();

  while (rc)
  {
    printf("Your string is: \n%s\n", buff);
    printf("Hit Enter key to end, or enter "
	   "a string with spaces: ");
    fflush(stdout);
    rc = scanf("%" xstr(LENGTH) "[^\n]%*[^\n]", buff);
    if (!feof(stdin))
    {
      getchar();
    }
  }
  return 0;
}
lundi 28 décembre 2009 à 15:22:08 | Re : scanf, comment ne pas ignorer les espaces ?

cool2source

Le novice que je suis est encore un peu dans le brouillard, mais je sais dans quelle direction chercher now. Je m'y colle ce soir. Merci
lundi 28 décembre 2009 à 15:27:44 | Re : scanf, comment ne pas ignorer les espaces ?

CptPingu

Administrateur CodeS-SourceS
Ok je t'ajoute des exemples plus simples, mais moins rigoureux:

Code C/C++ :
#include <stdio.h>

int main(void)
{
  char buff[256] = {0};

  /* Exemple 1: moins complets, mais solide */
  printf("Enter a string with spaces: ");
  scanf("%255[^\n]%*[^\n]", buff);
  printf("String = %s\n", buff);

  /* Exemple 2: version la plus basique, ne gère aucun type d'erreur */
  printf("Enter a string with spaces: ");
  scanf("%[^\n]", buff);
  printf("String = %s\n", buff);

  return 0;
}
mardi 29 décembre 2009 à 02:32:19 | Re : scanf, comment ne pas ignorer les espaces ?

cool2source

Merci pour tes exemples ;) j'ai compilé et j'ai obtenu le résultat que je désirais. Néanmoins je ne comprend pas le : %[^\n] .
L'occasion de parfaire mes connaissance, il me semble que "%d" ou "%c" servent à mettre au format d'un int ou d'un char. Ici que se passe-t-il avec "%[^\n]" dans --> scanf("%[^\n]", buff);
mardi 29 décembre 2009 à 02:43:25 | Re : scanf, comment ne pas ignorer les espaces ?

CptPingu

Administrateur CodeS-SourceS
%[^\n] => Prendre un chaine de caractère ne contenant pas de \n.
%*s => Dès le moment ou tu as une étoile après le %, ça veut dire intérpréter, mais ne pas récupérer.
Ex: scanf("%*s"); ou scanf("%*s%s%*s", buff);
%255s => Récupérer au max 255 caractères

%255[^\n]%*[^\n] => Tenter de récupérer 255 caractères, espace compris. Tous le reste est matché, mais n'est pas pris.

Ex: %4[^\n]%*[^\n] => Si on lui donne "t tit ututo ti", ca récupérera "t ti".
mardi 29 décembre 2009 à 02:51:01 | Re : scanf, comment ne pas ignorer les espaces ?

cool2source

Je n'ai plus de questions, tout me semble clair. Merci pour toutes ces informations et pour la rapidité de tes réponses. tu m'as été d'une grande aide ;)


Cette discussion est classée dans : espaces, rendre, saisie, scanf, ignorer


Répondre à ce message

Sujets en rapport avec ce message

affichage de saisie avec scanf [ par le_papy ] bonjour a tous, voila por la fac je dois prograer un jeu de sudoku(je bosse sous linux avec gcc). Jusque la pas trop de probleme, mon projet est fini Langage C (saisie de données sur fichier) [ par doggy59115 ] Bonjour à tous ! Je bloque sur mon programme en langage C. Je suis novice !Je dois créer un programme où l'on rentre : nom, prénom, ville, adresse, co Comment rendre une courbe plus jolie ? [ par Khoral ] BonjourJe dois réaliser une application contenant un graphique dont on connait seulement 30 points.Or, de manière à ce qu'il soit agréable à l'oeil, j langage C [ par wesslett ] je suis débutant et nouveau  dans ce forum ....!! Comment peut on afficher la date et l' heure lors d'une saisie de données dans un fichier ".txt"...! programme en C [ par graminach ] on a un pb pour la question 2b!le programme ne tourne pas en boucle et affiche meme en cas de valeur correcte erreurmerci d'avancehttp://www-ipst.u-st Saisie sécurisée d'un Edit Control (MFC) [ par goldensteph ] Bon je sais que la plupart d'entre vous n'aiment pas les mfc mais bon je tente ma chance... Voilà, j'ai un petit soucis avec un Edit Control : Je voud HELP!!!! gérer les espace dans mon prog lors des questions [ par Ethylotek ] bijoursvoici le début de mon prog :    printf("Veuillez saisir votre nom:\n");    scanf("%s",name);    printf("Veuillez saisir le nom de votre organis saisie de données d'un fichier ascii [ par berthier64 ] Bonjour,je souhaite saisir dans un vecteur la liste de chiffre qui sont dans un fichier ascii. Je sais le faire en C mais pas en C++. Pouvez vous m'ai Interprétation d'une saisie clavier et transfert vers une autre application [ par pleuduchfeu ] Bonjour,Je dois créer un programme qui se met en tâche de fond pour détourner ce qui est saisi au clavier, l'interpréter et l'envoyer à une autre appl erreur [ par jekburn ] Bonjour, mon programme refuse de fonctionné, il commet une erreur mémoireMerci pour votre aide#include #include #include struct enreg{ char nom[30];&


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,203 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales