[unix] commande de saisie

Résolu/Fermé
sistablack - 6 mai 2005 à 00:04
 fozzie - 11 mai 2005 à 15:50
Bonjour à tous,

J'utilise vi sous linux mandrake 10.1.
Je cherche une commande qui permettrait de saisir un certain nombre de caractère et arriver au nombre maximal, la saisie s'arrete. (equivalent a cgets sous dos).
Par exemple, char var[10]; lorsque l'utilisateur a saisi 10 carac. la saisi s'interrompt.
avec Fgets la saisie ne s'interrompa meme avec sizeof ou strlen.

Merci pour votre aide.
A voir également:

2 réponses

BaKa_ Messages postés 79 Date d'inscription samedi 16 avril 2005 Statut Membre Dernière intervention 26 mai 2005 7
6 mai 2005 à 12:49
Salut sistablack,

Ca n'est pas très clair comme question...
Pourquoi? Tu veux faire un buffer overflow ?...
Quel langage de programmation utilises-tu ?
A savoir :
Le C/C++ ne prévoit pas à l'origine de protection contre ce type d'attaque, il existe cependant des librairies permettant de prévenir ce genre d'attaque.
Le langage Perl en revanche est muni de fonctions permettant de "resizer" un tableau dynamiquement.

J'espère avoir répondu à ta question.

@+
0
SISTABLACK Messages postés 2 Date d'inscription mardi 6 février 2001 Statut Membre Dernière intervention 8 mai 2005
8 mai 2005 à 08:31
Bonjour,

J'utilise le C.
En fait, j'ai un utilisateur qui doit saisir un nom de fichier (j'ai choisi un format 8.3 pour plus de simplicité). Il doit saisir juste les 8 premiers caractères (l'extension est rajouter avec un strcat) et je voudrais qu'il en saisisse 8.
Je n'ai pas trouver de méthode qui permet d'arrêter la saisi au clavier. Je suis obligée de compter le nombre de caractère et de demander a l'utilisateur de saisir un nom de fichier tant que c'est différent à 8 caractères.

Vois-tu ce que je veux faire?

Merci beaucoup pour ton aide
0
SISTABLACK Messages postés 2 Date d'inscription mardi 6 février 2001 Statut Membre Dernière intervention 8 mai 2005
8 mai 2005 à 12:01
En fait le problème c'est que lorsque l'utilisateur dépasse la taille maximale pour la valeur de la première variable, les caractères s'enregistre pour la variable suivante.
Cela veut dire qu'il y a déjà une valeur pour la variable que l'utilisateur devrait saisir.
Je ne vois pas d'autres moyens que de limiter chaque saisie pour ne pas influencer les suivantes.

Merci de votre aide.
0
il faut utiliser la commande de substitution :
par exemple pour remplacer 7 caractères
7s "nouveau texte" <Echap>
0