vfscanf_s, vfwscanf_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 vfscanf_s(FILE * restrict stream, const char * restrict format, va_list arg);

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

Description

Remplace vfscanf en ajoutant des améliorations relatives à la sécurité.

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

vfscanf_s est équivalente à vfscanf, 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).

Valeur renvoyée

vfscanf_s renvoie le nombre de champs d'entrée correctement analysés, convertis et stockés. La valeur renvoyée n'inclut pas les champs analysés qui n'ont pas été stockés. Si aucun champ n'a été stocké, la valeur renvoyée est 0.

Si vfscanf_s rencontre une erreur d'entrée, la valeur renvoyée est EOF.

Exemple

#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
FILE *fp;
int vfsf(char *fmt, ...)
{
   va_list  argptr;
   int cnt;
   va_start(argptr, fmt);
   cnt = vfscanf_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);
   }
   fprintf(fp,"%d %f %s\n",inumber,fnumber,string);
   rewind(fp);
   vfsf("%d %f %s",&inumber,&fnumber,string);
   printf("%d %f %s\n",inumber,fnumber,string);
   fclose(fp);
   return 0;
}

Portabilité

POSIX Win32 ANSI C ANSI C++

+

+

+

Voir aussi