printf()
/scanf()
int printf(const char *format, ...);
int scanf(const char *format, ...);
Ces instructions font des écritures et des lectures formattées
sur les flots de sortie et d'entrée standard. Les spécifications de
format sont décrites dans la page de manuel printf(3)
.
sprintf()
/sscanf()
int sprintf(char *str, const char *format, ...);
int sscanf(const char *str,const char *format, ...);
Similaires aux précédentes, mais les opérations lisent ou écrivent
dans le tampon str
.
Remarque : la fonction sprintf()
ne connait pas la taille
du tampon str
; il y a donc un risque de débordement. Il faut
prévoir des tampons assez larges, ou (mieux) utiliser la fonction
#include <stdio.h>
int snprintf(char *str, size_t size, const char *format, ...);
de la bibliothèque GNU, qui permet d'indiquer une taille à ne pas dépasser.
system()
#include <stdlib.h>
int system (const char * string);
permet de lancer une ligne de commande (shell)
depuis un programme.
L'entier retourné par system()
est le code de retour
fourni en paramètre à exit()
par la commande.
Exemple :
1 /*
2 * envoifichier.c
3 *
4 * Illustration de system();
5 */
6 #include <stdio.h>
7 #include <stdlib.h>
8 #define TAILLE_MAX_COMMANDE 100
9 #define TAILLE_MAX_DEST 100
10 #define TAILLE_MAX_NOMFICHIER 100
11 int main(void)
12 {
13 char dest[TAILLE_MAX_DEST],
14 nomfichier[TAILLE_MAX_NOMFICHIER],
15 commande[TAILLE_MAX_COMMANDE];
16 int reponse;
17 printf("destinataire ?\n");
18 scanf("%s", dest); /* dangereux */
19 printf("fichier à envoyer ?\n");
20 scanf("%s", nomfichier); /* dangereux */
21 snprintf(commande, TAILLE_MAX_COMMANDE,
22 "uuencode %s %s | mail %s",
23 nomfichier, nomfichier, dest);
24 reponse = system(commande);
25 if (reponse == EXIT_SUCCESS)
26 printf("Ok\n");
27 else
28 printf("La commande retourne : %d\n", reponse);
29 exit(EXIT_SUCCESS);
30 }