man sprintf
Mais mieux vaut privilégier snprintf, qui permet de contrôler la taille du buffer de sortie.
Sinon, main() doit explicitement retourner un int, username2 ne contient qu'un seul caractère tel que tu l'as déclaré, et scanf() çaÿ le mal utilisé comme ici.
Quant à system(), derrière il fait un sh -c "le parametre que tu as passé à system()".
Donc tu peux tout à fait passer plusieurs commandes d'un coup au shell, séparées par des points-virgule, et donc définir une variable d'environnement avant de lancer une commande.
Exemple :
Code :
#include <stdio.h> #include <stdlib.h> int main(void) { char command[100]; snprintf(command, 100, "taiste='%s' ; export taiste ; echo $taiste", "its teh mighty taiste" ); system(command); return 0; }
|
$ gcc -Wall -pedantic taiste.c
$ a.out
its teh mighty taiste
$ |