Difficulté utilisation sscanf_s
Résolu/Fermé[Dal] Messages postés 6195 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 4 décembre 2024 - 13 sept. 2022 à 21:56
- Difficulté utilisation sscanf_s
- Notice d'utilisation - Guide
- Utilisation chromecast - Guide
- La ressource demandée est en cours d'utilisation - Forum Téléphones & tablettes Android
- Votre compte a été désactivé pour violation de nos conditions d’utilisation - Guide
- Droit utilisation musique 30 secondes ✓ - Forum MacOS
3 réponses
Modifié le 9 sept. 2022 à 07:14
bonjour,
moi je ferais plutôt:
sscanf_s(ligne, "%30s, %30s, %d, %c, %li", nom, 31, prenom, 31, &age, &sexe, 1, &numTel);
Explications: https://docs.microsoft.com/fr-fr/cpp/c-runtime-library/reference/sscanf-s-sscanf-s-l-swscanf-s-swscanf-s-l?view=msvc-170
Modifié le 9 sept. 2022 à 16:13
Salut Theo_2059,
Je suppose que tu dois certainement utiliser Microsoft Visual Studio pour tenter de compiler ton code C et que tu as probablement d'abord tenté d'utiliser l'instruction standard du C sscanf().
Lorsque tu fais cela, Microsoft décrète que cette fonction serait "obsolète" et t'invite à utiliser sscanf_s() à la place en refusant de compiler ton code avec une erreur comme celle-ci :
Error 1 error C4996: 'sscanf': This function or variable may be unsafe. Consider using sscanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
Comme l'a expliqué yg_be, les paramètres à passer à sscanf_s() sont alors différents de ceux de sscanf() et doivent inclure des indications de taille de buffer maximales pour certains types, sinon, ton appel à la fonction de remplacement réputée plus "sûre" ne fonctionnera pas.
Toutefois, si tu veux utiliser sscanf(), qui n'est pas obsolète dans le langage C et est parfaitement supportée dans les standards à jour de ce langage, tu peux forcer le compilateur à accepter ton instruction sscanf() (et d'autres que Microsoft a décidé toute seule de "bannir" faisant que du code parfaitement légal en C standard ne compile pas chez eux par défaut) en suivant l'indication fournie dans le message d'erreur.
En suivant cette indication, pour que le compilateur de Microsoft ne t'empêche plus d'utiliser ces fonctions du langage C, il te suffit de mettre ce #define au tout début de ton code :
#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #define MAX_LENGTH 200 (suite de ton code)
Alternativement, tu peux aussi mettre une ligne
#pragma warning(disable:4996)
et tu pourras désormais utiliser sscanf() avec la syntaxe que tu connais, mais aussi scanf() et plein d'autres fonctions du langage C, par exemple de manipulation de chaîne comme strcpy() que Microsoft a décidé de rendre indisponibles par défaut.
Modifié le 10 sept. 2022 à 10:58
Bonjour à vous. Merci d'avoir pris le temps de me répondre ! Je vais essayer ce que vous m'avez dit. Merci.
Theo
13 sept. 2022 à 21:56
Si ton problème est résolu, peux-tu mettre ton sujet en "résolu" (clique sur les "..." en bas de ton sujet initial).