Rechercher : dans
Par :

[unix] commande de saisie

Dernière réponse le 11 mai 2005 à 15:50:20 sistablack, le 6 mai 2005 à 00:04:33 
 Signaler ce message aux modérateurs

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.

Meilleures réponses pour « [unix] commande de saisie » dans :
Commandes UNIX Voir Tableau des principales commandes UNIX Commande Unix Description Options ls liste le contenu d'un répertoire -a Affiche tous les fichiers, y compris les fichiers cachés ...
[Linux] Utiliser la commande 'su' VoirPréambule Se connecter sous un autre ID utilisateur avec "su" Démarrer un nouveau shell de connexion avec "su -" Revenir au shell précédent Suspendre le shell du compte root Notes Préambule La commande "su" (Switch User, appelée plus...
Exécuter un script shell VoirExécution d'un script Pour pouvoir exécuter un script ou un programme en ligne de commande il y a plusieurs possibilités : 1. Le chemin absolu 2. Le chemin relatif 3. Modifier la variable PATH Note: Le Sha...
Envoi de commandes CISCO publipostées via SSH/Telnet VoirExpect en action Informations générales publipmachin point cheu ? Mais c'est quoi au juste ? Le contenu des fichiers annexes commandes.txt liste.txt THE Script Commentaires Remerciements Questions / Report de Bugs / Modifications
Utilisation de Telnet VoirPrésentation de Telnet Telnet est un protocole permettant d'émuler un terminal à distance, cela signifie qu'il permet d'exécuter des commandes saisies au clavier sur une machine distante. L'outil Telnet est une implémentation du protocole...
Introduction aux systèmes UNIX VoirLe système UNIX Le système Unix est un système d'exploitation multi-utilisateurs, multi-tâches, ce qui signifie qu'il permet à un ordinateur mono ou multi-processeurs de faire exécuter simultanément plusieurs programmes par un ou plusieurs...
UNIX - Les fichiers VoirIntroduction aux fichiers Unix Sous les systèmes UNIX tout élément est représenté sous forme de fichier. L'ensemble des fichiers est architecturé autour d'une unique arborescence dont la base, appelée racine, est notée «/». Types de...

1

BaKa_, le 6 mai 2005 à 12:49: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.

@+
La confiance n'exclut pas le contrôle !

Répondre à BaKa_

2

SISTABLACK, le 8 mai 2005 à 08:31:21

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

Répondre à SISTABLACK

3

SISTABLACK, le 8 mai 2005 à 12:01:46

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.

Répondre à SISTABLACK

4

 fozzie, le 11 mai 2005 à 15:50:20

Il faut utiliser la commande de substitution :
par exemple pour remplacer 7 caractères
7s "nouveau texte" <Echap>

Répondre à fozzie