Page suivante Page précédente Table des matières

2. Rappels divers

2.1 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).

2.2 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.

2.3 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     }
 


Page suivante Page précédente Table des matières