Accueil > Forum > > > > scanf, comment ne pas ignorer les espaces ?
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
|
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
|
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
|
%[^\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];&
Livres en rapport
|
Derniers Blogs
POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc
Forum
MATLAB PROGRAMME MATLAB PROGRAMME par wahab1087
Cliquez pour lire la suite par wahab1087
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|