Win3x.Org

Windows & DOS Community

[Résolu] Input: la fonction manquante du dos.

Répondre   Page 1 sur 2  [ 16 messages ]
Aller sur la page 1 2 »
Auteur Message
Ptigiloo
Sujet du message : [Résolu] Input: la fonction manquante du dos.
Publié : 25 mai 2004 19:17
Membre d'honneur
Avatar de l’utilisateur
Hors-ligne
 
Messages : 166
Inscription : 14 janv. 2003 17:54
 
Voila, je suis en train de créer en C une belle petite application Input, qui sert à faire rentrer une variable à l'utilisateur.
Cette petite application se compile bien, mais malheureusement, elle plante. Je vous met la source actuelle du fichier Input.C et du fichier Input.H

Input.C
/*
	input.c: voila, c'est un petit programme en C
	destin? ? placer une variable DOS que l'utilisateur
	aura compl?t?e.

	syntaxe: input variable
	o? variable est le nom de la variable a rentrer.
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

/* Les Prototypes*/
#include "\BORLANDC\input.h"


/*Bon passons maintenant ? la fonction principale*/
int main(int argc, char * argv[])
{
	int retour;
	char * var ="";
	if(argc!=2)
	{
		utilisation();
		return 1;
	}
	printf("%s: ",argv[1]);
	gets(var);
	retour=variable(argv[1],var);
	return retour;
}

void utilisation()
{
	printf("input.exe, une cr?ation du PCiste.Anonyme\n");
	printf("?crit en C sous license GNU/GPL\n");
	printf("La syntaxe est la suivante:\n");
	printf("\tinput variable\n");
	printf("o? variable est le nom de la variable ? attribuer\n");
	printf("\nen cas de succ?s, input renvoie 0, sinon 1\n");
}

int variable(char * var,char * setting)
{
	int retour;
	char * appeldos="";
	strcat(appeldos, "SET ");
	strcat(appeldos, var);
	strcat(appeldos, "=");
	strcat(appeldos, setting);
	strcat(appeldos, "\n\0");
         retour=system(appeldos);
	return retour;
}
Input.H
/* 
	input.H
	Prototypes des fonctions du fichier Input.c
*/
void utilisation();
int variable(char * var,char * setting);
Je m'en remet à vous: Quelqu'un vois-t-il quelque chose qui ne va pas?
(Je précise que j'utilise Borland C++ 3 sous Dos...)


Haut
Profil Citer
michel
Sujet du message : Ré:
Publié : 25 mai 2004 20:34
Administrateur
Avatar de l’utilisateur
Hors-ligne
 
Messages : 3010
Inscription : 07 févr. 2003 19:46
PC Rétro : IBM - PS2 mod85-DOS 6.22 - Windows 3.11 fwg
 
Pour faire rentrer une variable où ? Parce qu'il existe déjà la commande SET :D

_________________

clikicitoraleur


Haut
Profil Citer
Ptigiloo
Sujet du message :
Publié : 25 mai 2004 20:54
Membre d'honneur
Avatar de l’utilisateur
Hors-ligne
 
Messages : 166
Inscription : 14 janv. 2003 17:54
 
Je vois plutôt cette fonction utilisée dans un batch:
A moment donné, on a bseoin d'une donnée, et bien du coup avec ce input on pourrait faire rentrer à l'utilisateur cette donnée et la stocker comme variable dos.

Il faut remarquer que de tout façon, j'utilise la commande set, donc pour faire un clone de command set, c'est pas le top...
La en fait, on tape input variable,
variable étant le nom de la variable et input demande une entrée clavier.

Je vois cette commande un peu comme un équivalent de la commande input du Basic.


Haut
Profil Citer
Nnay
Sujet du message :
Publié : 26 mai 2004 14:09
 
 
C très simple: 1 pointeurs de chaînes de caractères fait planter le programme quand il voit sa taille changer:
exemple:
char *text;
char *otretext;
text="Ca va ";
otretext="planter!";
strcat(text,otretext); //text va dépasser sa capacitée pour rentrer, dans otretext
Le solution: donner une taille aux pointeurs( 255 est le maximum sous DOS pour une commande il me semble donc...)

Dernière modification par Nnay le 26 mai 2004 15:06, modifié 1 fois.

Haut
Citer
Ptigiloo
Sujet du message :
Publié : 26 mai 2004 14:25
Membre d'honneur
Avatar de l’utilisateur
Hors-ligne
 
Messages : 166
Inscription : 14 janv. 2003 17:54
 
Ok merci du coup de main :)


Haut
Profil Citer
fosco
Sujet du message :
Publié : 26 mai 2004 15:56
Membre d'honneur
Hors-ligne
 
Messages : 20
Inscription : 14 avr. 2003 20:44
 
ouais, il faut que tu alloue une taille à ton char * :) (malloc)


Haut
Profil Citer
inico
Sujet du message :
Publié : 27 mai 2004 16:19
Membre inscrit
Avatar de l’utilisateur
Hors-ligne
 
Messages : 77
Inscription : 17 avr. 2004 17:24
 
Faut aussi verifier toutes les entrés car meme si ce n'est pas une application serveur , on pourrait faire un debordement de tampon .
Cela ne servirait à rien en temps normal mais si la machine est public et que quelqu'un veut avoir un acces à $comspec$ dessus , ca lui plaiarait .


Haut
Profil Citer
Nnay
Sujet du message :
Publié : 27 mai 2004 17:10
 
 
Sinon,le :
printf("%s:",argv[1]);
est pas très éstethique: les noms de variable sont pas souvents explicite.
Sinon,
if(argc!=2)utilisation();
risque de faire planter le prog. car il faut un argument, pas 2.


Haut
Citer
Ptigiloo
Sujet du message :
Publié : 27 mai 2004 19:17
Membre d'honneur
Avatar de l’utilisateur
Hors-ligne
 
Messages : 166
Inscription : 14 janv. 2003 17:54
 
1er Argument -> L'appel du programme
exemple: input
2e Argument -> Le nom de la variable...
exemple: variable

Ainsi on a bien 2 arguments...


Haut
Profil Citer
JorgePereira
Sujet du message : RE
Publié : 29 mai 2004 01:40
Membre inscrit
Avatar de l’utilisateur
Hors-ligne
 
Messages : 26
Inscription : 07 févr. 2003 19:53
 
ç'est simples sans programmer un truc a part que t'utilise (comme dans delphi TYPE xxxx=record;) pour agrouper plein des variables sinon on utilise

SET MAVARIABLE=6000
IF ERRORLEVEL 1 GOTO ERROR
ECHO %MAVARIABLE%
GOTO FIN
:ERROR
ECHO Espace d'environement insufisant pour votre truc
:FIN
REM Fin de programme...

On peut pour cella faira un truc %COMSPEC% /E:1024 pour pas avoir des surprises avec des variables..

A+

_________________

--=FurtiF™=-- - WebMasters Associés® - RocketBot2 - NecroBot2 - Account Manager ©2001-2019.


Haut
Profil Citer
Afficher : Trier par : Ordre :
Répondre   Page 1 sur 2  [ 16 messages ]
Revenir à « Questions et problèmes résolus » | Aller sur la page 1 2 »
Aller :