[debutant] prototype fonction
Bonjour,
Je me mets au C avec PellesC dont l'IDE permet d'avoir toutes les fonctions des bibliotheques standard. Pour sscanf (notamment) j'ai ceci :
Citation:
Syntax:
int sscanf(const char * restrict buffer, const char * restrict string, [argument] ...);
j'avoue que je ne comprends pas vraiment le prototype et notamment les "restrict" buffer et "restrict string". Par ailleurs, la même aide me dit :
Citation:
The function reads data from the string buffer, and store the data in objects pointed to by argument. Each argument must be a pointer to a variable of a type that matches the type specifier in format.
là j'ai bien compris (je pense) : la fonction extrait du buffer stdin (sans doute) une chaine et la stocke dans la variable de "argument" mais je ne vois pas vraiment le lien avec ce qui précède (ces restrict et ces const *char). Ce n'est pas la première fonction de ce type dont je ne comprends pas le prototype donc je pense qu'il y a une (ou plusieurs) notion(s) qui m'échappe(nt).
Merci.
Re: [debutant] prototype fonction
Citation:
Envoyé par richard
Citation:
int sscanf(const char * restrict buffer, const char * restrict string, [argument] ...);
j'avoue que je ne comprends pas vraiment le prototype et notamment les "restrict" buffer et "restrict string". Par ailleurs, la même aide me dit :
Pour faire simple, oublie le restrict. Ca sert plus au compilateur qu'à l'utilisateur.
Citation:
Citation:
The function reads data from the string buffer, and store the data in objects pointed to by argument. Each argument must be a pointer to a variable of a type that matches the type specifier in format.
là j'ai bien compris (je pense) : la fonction extrait du buffer stdin (sans doute) une chaine et la stocke dans la variable de "argument" mais je ne vois pas vraiment le lien avec ce qui précède (ces restrict et ces const *char). Ce n'est pas la première fonction de ce type dont je ne comprends pas le prototype donc je pense qu'il y a une (ou plusieurs) notion(s) qui m'échappe(nt).
Les 'const' sont là pour signaler à l'utilisateur que les chaines dont les adresses sont passées à la fonction ne sont pas modifiées par la fonction, et qu'il est donc permi de passer l'adresse d'une chaine non modifiable (comme une chaine littérale, par exemple).
sscanf() s'utilise à peu près comme scanf(). Ce sont les mêmes formatteurs, et la même façon de passer l'adresse de la variable de destination.
Fait quelques essais, tu verras que c'est assez simple.
Evidemment, comme toujours, si la variable de destination est un tableau de char ("%s"), celui-ci doit avoir une taillle suffisante.
Enfin, il faut tester le code retourné pour vérifier que l'on a bien réussi toutes les conversions.