vfprintf_s, vfwprintf_s

De RAD Studio
Aller à : navigation, rechercher

Remonter à stdio.h - Index


Fichier en-tête

stdio.h

Catégorie

Fonctions d'entrée/sortie formatées

Prototype

int vfprintf_s(FILE * restrict stream, const char * restrict format, va_list arg);

int vfwprintf_s(FILE * restrict stream, const wchar_t * restrict format, va_list arg);

Description

Remplace vfprintf, vfwprintf en ajoutant des améliorations relatives à la sécurité.

Les fonctions v...printf_s sont connues comme autres points d'entrée pour les fonctions ...printf_s. Elles se comportent exactement comme leurs équivalents ...printf_s, mais elles acceptent un pointeur sur une liste d'arguments au lieu d'une liste d'arguments.

vfprintf_s est équivalente à vfprintf, vfwprintf, mais elle ajoute des contraintes d'exécution quant à la validité du flux, du format et des éléments du paramètre arg correspondant à un spécificateur de format %s (comme mentionné plus tôt, ne doivent pas être des pointeurs null).

vfprintf_s accepte un pointeur sur une suite d'arguments, applique un spécificateur de format contenu dans la chaîne de format pointée par format à chaque argument, et envoie les données formatées dans un flux. Le nombre de spécificateurs de format de la liste d'arguments (arg) doit être identique au nombre d'éléments.

Valeur renvoyée

En cas de succès, vfprintf renvoie le nombre de caractères de la sortie.

En cas d'erreur, elle renvoie une valeur négative.

Exemple

#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
FILE *fp;
int vfpf(char *fmt, ...)
{
   va_list argptr;
   int cnt;
   va_start(argptr, fmt);
   cnt = vfprintf_s(fp, fmt, argptr);
   va_end(argptr);
   return(cnt);
}
int main(void)
{
   int inumber = 30;
   float fnumber = 90.0;
   char string[4] = "abc";
   fp = tmpfile();
   if (fp == NULL)
   {
      perror("tmpfile() call");
      exit(1);
   }
   vfpf("%d %f %s", inumber, fnumber, string);
   rewind(fp);
   fscanf_s(fp,"%d %f %s", &inumber, &fnumber, string);
   printf_s("%d %f %s\n", inumber, fnumber, string);
   fclose(fp);
   return 0;
}

Portabilité

POSIX Win32 ANSI C ANSI C++

vfprintf_s

+

+

+

+

vfwprintf_s

+

+

+

Voir aussi