vfprintf_s, vfwprintf_s
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 |
+ |
+ |
+ |