commande system

Statut
N'est pas ouverte pour d'autres réponses.

cubepiege

Nouveau membre
Voici mon programme

#include <stdio.h>
#include <cstdlib>

int main(void)
{
char nom[20];
printf("entrez un nom utilisateur a rajouter :");
scanf("%s",nom);
printf("%s\n",nom);
system("xcopy /E /Y /H /I d:\users\USER1A d:\users\nom");
}

Probleme ma syntaxe pour la fonction system est mauvaise. Pouvez vous me la corriger svp?
Deuxieme point, je souhaite integrer la variable "nom" saisi en debut de programme en variable dans la commande system(d:\usres\nom). Comment faire?
Merci
 

Rodolphe

Habitué
Il faut que tu double les backslash car ce sont des caractères d'échapement.

Code:
int main(void)  
{  
char nom[20];  
    printf("entrez un nom utilisateur a rajouter :");  
    scanf("%s",nom);  
    printf("%s\n",nom); 
    system("xcopy /E /Y /H /I d:\\users\\USER1A d:\\users\\nom"); 
}

Je ne ferais pas de commentaire sur l'utilisation de system ... (sache juste que c'est mal ...)
 

Rodolphe

Habitué
Pour ta deuxième question, il suffit de construire la commande passé à system

Code:
#define CMD_SKEL "xcopy /E /Y /H /I d:\\users\\USER1A d:\\users\\%s"

int main(void)  
{  
char nom[20];
char *cmd; 
    printf("entrez un nom utilisateur a rajouter :");  
    scanf("%s",nom);  
    printf("%s\n",nom);
    cmd = (char *)malloc(strlen(CMD_SKEL) + strlen(nom) + 2);
    sprintf(cmd, CMD_SKEL, nom);
    system(cmd); 
}

Evidemment il faut que tu rajoutes des controles sur la saisie car si on tape un nom ayant plus de 20 caractères tu va te taper un débordement de buffer.
 

franckymlevrai

Nouveau membre
Je pense que le msieur il se fait bien brère
Code :

#define CMD_SKEL "xcopy /E /Y /H /I d:\\users\\USER1A d:\\users\\%s"

int main(void)
{
char nom[20];
char *cmd;
printf("entrez un nom utilisateur a rajouter :" );
scanf("%s",nom);
printf("%s\n",nom);
cmd = (char *)malloc(strlen(CMD_SKEL) + strlen(nom) + 2);
sprintf(cmd, CMD_SKEL, nom);
system(cmd);
}




int main(void)
{
char nom[20];
char lacmd[250];

strcpy (lacmd, "xcopy /E /Y /H /I d:\\users\\USER1A d:\\users\\");

printf("entrez un nom utilisateur a rajouter :" );
scanf("%s",nom);
printf("%s\n",nom);
strcat (lacmd, nom);

system(cmd);
}
 

batchy

Grand Maître
et si jamais il faut ajouter le nom dans une autre partie de la commande ?

sinon moi j'ai une critique sur le premier code : cmd n'est pas désaloué.
et une critique générale : system ça pue.
 

zeb

Modérateur
1° ce topic est réveillé rgulièrement pour queue dalle.
2° franckymlevrai, tu me fais braire avec ton non-respect des règles.


On ferme
 
Statut
N'est pas ouverte pour d'autres réponses.
Derniers messages publiés
Statistiques globales
Discussions
730 134
Messages
6 718 064
Membres
1 586 394
Dernier membre
Manoushk
Partager cette page
Haut