Téléchargement
illégal
Posez votre question Signaler

[C] Scanf et chaînes de caractères. [Résolu]

niernier 223Messages postés 8 octobre 2008Date d'inscription 21 novembre 2011Dernière intervention - Dernière réponse le 27 janv. 2010 à 22:08
Bonjour,
J'ai un petit soucis : lorsque j'essaye de faire un scanf avec une chaîne de caractère j'obtiens le message d'erreur suivant : attention : format ‘%s’ expects type ‘char *’, but argument 2 has type ‘char (*)[100]’
Voici mon code source :
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
    char prenom[100];
    scanf("%s", &prenom);
    printf("prenom = %s \n", prenom);
    return 0;
}

D'avance merci!
Lire la suite 

[C] Scanf et chaînes de caractères »

8 réponses
Réponse
+1
moins plus
Bonjour,

scanf("%s", prenom); Il faut enlever l'esperluette (&).
Le tableau passé en argument sera de type char*.

De plus attention à l'utilisation de scanf. Il vaut mieux utiliser fgets ou alors mettre : scanf("%99s", prenom) et vérifier la valeur de retour.

Cdlt,
Ajouter un commentaire
Réponse
+0
moins plus
Pourquoi vaut-il mieux utiliser fgets ?
Ajouter un commentaire
Réponse
+0
moins plus
Car scanf est une fonction vraiment complexe et on a tendance à mal l'utiliser.
Par exemple, si tu mets scanf("%s", prenom); avec char prenom[5]; et que tu mets comme prénom : "geraldine", alors tu auras un segmentation fault. C'est d'ailleurs une si grave erreur qu'il est très important de mettre ses logiciels à jour ou d'appliquer les patchs pour être en sécurité ;-))).

Cdlt,
Ajouter un commentaire
Réponse
+0
moins plus
Car scanf est une fonction vraiment complexe et on a tendance à mal l'utiliser.
Par exemple, si tu mets scanf("%s", prenom); avec char prenom[5]; et que tu mets comme prénom : "geraldine", alors tu auras un segmentation fault. C'est d'ailleurs une si grave erreur qu'il est très important de mettre ses logiciels à jour ou d'appliquer les patchs pour être en sécurité ;-))).

Cdlt,
Ajouter un commentaire
Réponse
+0
moins plus
c une fonction depreciable comme strcpy ou strcat
elles ont des failles de securite elle ne gere pas l overflow
fiddy- 27 janv. 2010 à 21:24
Non, scanf n'est pas dépréciable. On peut très bien faire du traitement sécurisé avec scanf à condition de bien l'utiliser, ce qui n'est pas le cas de strcpy ou strcat.
dwyane346- 27 janv. 2010 à 22:08
merci fiddy
en faite c qu en 1er anne on nous avez interdit d utiliser scanf so j ai cru que ...........
bye
Ajouter un commentaire
Réponse
+0
moins plus
Et bien merci pour vos informations, je vais me renseigner plus emplement sur fgets.
Ajouter un commentaire
Ce document intitulé « [C] Scanf et chaînes de caractères. » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?