strcmp donnant une erreur de segmentation

c‘est mon code donnant faute de segmentation

#include  #include  #include  #include  #include  int main(void) { char *get; scanf("%s", get); int k = strcmp("sachin", get); printf("%d", k); } 

Merci pour toute aide;

 char *get; 

L’instruction ci-dessus définit get comme étant un pointeur sur un caractère. Il peut stocker l’adresse d’un object de type char , pas un caractère lui-même. Le problème est à la fois avec scanf et strcmp call. Vous devez définir un tableau de caractères pour stocker la chaîne d’entrée.

 #include  #include  int main(void) { // assuming max ssortingng length 40 // +1 for the terminating null byte added by scanf char get[40+1]; // "%40s" means write at most 40 characters // into the buffer get and then add the null byte // at the end. This is to guard against buffer overrun by // scanf in case the input ssortingng is too large for get to store scanf("%40s", get); int k = strcmp("sachin", get); printf("%d", k); return 0; } 

Vous devez allouer de la mémoire pour le pointeur get .

Ou utilisez un tableau de caractères:

 char get[MAX_SIZE]; scanf("%s",get); 

Lorsque vous déclarez un pointeur, il ne pointe sur aucune adresse mémoire. Vous devez explicitement allouer de la mémoire pour ce pointeur par malloc (style c) ou new (style c ++).

Vous devrez également gérer vous-même les opérations de nettoyage en sélectionnant respectivement delete / delete .

bien sûr, vous obtenez une faute de segment. vous avez dit à votre ordinateur d’écrire les entrées utilisateur sur un pointeur non initialisé.

 char *get; // just a pointer that may wildly points anywhere scanf("%s",get); 

définir get être un tableau de caractères

 char get[SOME_LARGE_CONSTANTS_THAT_CLEARLY_IS_LARGER_THAN_YOUR_USER_INPUT];