Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 07/07/2006, à 00:26

vinc1001888

[Resolu] Simuler une saisie clavier [C/C++]

Salut tlm, je voudrais savoir si il existe un moyen de simuler une saisie clavier en C/C++ merci ;-)

#2 Le 07/07/2006, à 11:01

gene69

Re : [Resolu] Simuler une saisie clavier [C/C++]

oui
il y a un moyen.


( booouuu je suis constructif aujourd'hui)


Quand le berger est lâche, le loup chie de la laine.
A (draft) guide to UFO Alien-Invasion

Hors ligne

#3 Le 07/07/2006, à 12:32

vinc1001888

Re : [Resolu] Simuler une saisie clavier [C/C++]

tu pourrais me l'indiquer merci !

#4 Le 07/07/2006, à 13:53

Crashforburn

Re : [Resolu] Simuler une saisie clavier [C/C++]

Oui c'est possible, ce soir si je retrouve le doc ou c'est marqué je le poste wink

Au fait, c'est pas toi qui avait fait un tuto sur comment faire un OS ??? big_smile


Un blog inutile de plus : http://crashforburn.free.fr/dotclear/
[Membre du club des beaux Ubunteros] : http://forum.ubuntu-fr.org/viewtopic.php?pid=535299
Contre la nouvelle année, votons fonacon : http://www.fonacon.net/

Hors ligne

#5 Le 07/07/2006, à 13:57

node

Re : [Resolu] Simuler une saisie clavier [C/C++]

Basiquement :
dans le fichier ma_simulation.in :

Je_veux_simuler_la_frappe_de_cette_chaine_de_caracteres
Puis_de_celle_ci

Commande de lancement du programme :

mon_prog < ma_simulation.in

Tu peux tester avec mon_prog.c :

#include <stdio.h>
int main(void) {
  char s[100];
  scanf( "%s", s );
  printf( "premiere chaine: %s\n", s );
  scanf( "%s", s );
  printf( "deuxieme chaine: %s\n", s );
  return 0;
}

Hors ligne

#6 Le 07/07/2006, à 14:00

gene69

Re : [Resolu] Simuler une saisie clavier [C/C++]

là n'était pas la question.

qui a dit que je savais faire?

Je crois qu'il faut faire comme en linux, c'est à dire rediriger les entrée sorties. J'avais peur de dire une grosse c:Dnnerie, alors je ne l'avais pas écrite. Pourquoi rediriger les ES? parce qu'en C l'entrée standart c'est le clavier.

apparament on peut utiliser les tuyaux (c'est une énorme surprise ! )

regarde là je pense qu'il y a tous les indices nécessaire à ta quête:
http://www.ensta.fr/~gueydan/Poly/Html/node16.html


Quand le berger est lâche, le loup chie de la laine.
A (draft) guide to UFO Alien-Invasion

Hors ligne

#7 Le 07/07/2006, à 14:11

gene69

Re : [Resolu] Simuler une saisie clavier [C/C++]

@ node

1) tu triches: la redirection d'entrées sorties que tu proposes c'est du shell pur sucre et pas du C.
2) tu es dangereux: le programme que tu proposes comme exemple possède au moins deux failles de type "buffer overflow".
3) tu es sur de la syntaxe de scanf?


Quand le berger est lâche, le loup chie de la laine.
A (draft) guide to UFO Alien-Invasion

Hors ligne

#8 Le 07/07/2006, à 14:16

gene69

Re : [Resolu] Simuler une saisie clavier [C/C++]

j'y pense en java (et donc sans doute en C++) on empile (encapsule) les constructeurs pour faire des redirections.


Quand le berger est lâche, le loup chie de la laine.
A (draft) guide to UFO Alien-Invasion

Hors ligne

#9 Le 07/07/2006, à 14:28

node

Re : [Resolu] Simuler une saisie clavier [C/C++]

@gene69
Je triche ? big_smile
Pour moi, on peut appeler ça de la simulation d'entrée vu que ça passe par stdin, comme les frappe au clavier. Et puis, il y a un basiquement dans mon message, et la « consigne » est en une phrase qui peut être interprété de plusieurs façons.

C'est sûr qu'il ne faut pas utiliser scanf dans un programme, mais là, c'est un programme de test, pour comprendre le fonctionnement de la redirection, autant faire concis. C'est juste pour faire une « preuve du concept », ce ne sont pas des lignes à insérer dans son propre programme.

Je suis curieux de savoir ce qui te choque dans la syntaxe de scanf.

Hors ligne

#10 Le 07/07/2006, à 18:01

gene69

Re : [Resolu] Simuler une saisie clavier [C/C++]

pour le scan j'étais pas sur ma machine avec man 3 sous la main. bon méa culpa, je ne sais plus compter jusqu'à deux.

bon apres ya écrit avec "simuler avec C/C++". pouf pouf. égalité


Quand le berger est lâche, le loup chie de la laine.
A (draft) guide to UFO Alien-Invasion

Hors ligne

#11 Le 11/07/2006, à 13:32

vinc1001888

Re : [Resolu] Simuler une saisie clavier [C/C++]

Merci, c'est ce que je cherchais !

#12 Le 11/07/2006, à 14:32

gene69

Re : [Resolu] Simuler une saisie clavier [C/C++]

[résolu]


Quand le berger est lâche, le loup chie de la laine.
A (draft) guide to UFO Alien-Invasion

Hors ligne

#13 Le 12/07/2006, à 00:22

coffee

Re : [Resolu] Simuler une saisie clavier [C/C++]

getchar() et une boucle while() avec un realloc() pour éviter le buffer overflow

Bon sinon perso je vois que fgetc en disant qu'on lit dans stdin puis on fait un fputc ou fprintf dans stdout ou stderr

après c'est un peu bas niveau non?

En tant que modo je mets quand meme résolu wink


Nom d'un tupperware habillé en streetware mangeant de la confiture de pouère et qui se dite où est-ce que je suis ouère !
Tiens mon blog
Les blagues sous forme de fausses aides sont susceptible de ban (ex: rm)

Hors ligne

#14 Le 15/07/2006, à 05:17

foobar2000

Re : [Resolu] Simuler une saisie clavier [C/C++]

En C++ c'est encore plus simple big_smile

#include <iostream>

int main () {
  std::string s;

  std::cin >> s;
  std::cout << s;
  return 0;
}

Aucun rapport avec le logiciel du même nom.

Hors ligne

#15 Le 15/07/2006, à 21:34

gene69

Re : [Resolu] Simuler une saisie clavier [C/C++]

mais en C++ les opérateurs ne signifient rien puisque qu'on peut les surcharger.
J'abandonne pas.


Quand le berger est lâche, le loup chie de la laine.
A (draft) guide to UFO Alien-Invasion

Hors ligne

#16 Le 24/05/2007, à 15:47

ponchy

Re : [Resolu] Simuler une saisie clavier [C/C++]

Je sais, je suis 3 guerres en retard.. mais trouvez vous ce code-ci bcp plus long ?

#include<stdio.h>
#include<strings.h>

#define SIZE_MAX 100

int main(int argc,char**argv){
        char s[SIZE_MAX];
        int i=1;
        while(fgets(s,SIZE_MAX,stdin)!=NULL){
                if(strcmp(s,"bye\n")==0)return;
                printf("%dième chaine : %s\n",i,s);
                i++;
                s[0]='\0';
        }
}

Hors ligne