Programme C: erreur de segmentation

Je suis nouveau dans la programmation C et j’obtiens une erreur de segmentation quelque part dans mon code. Le programme utilise une fonction de retour pour demander à un utilisateur le montant de l’argent qu’il a sur son compte bancaire. plus tard, je vais append du code pour calculer l’intérêt.Merci de regarder ceci pour moi car j’ai beaucoup de mal à comprendre pourquoi j’obtiens cette erreur.

#include  #include  int getPV() { int d; int start; printf("Start: "); scanf("%d", start); d = start; return d; } int main() { int pv; pv = getPV(); print("%d",pv); return 0; } 

Lorsque vous appelez scanf, vous devez transmettre l’ address of the variable dans laquelle vous souhaitez stocker la valeur.

Cela signifie que si vous souhaitez stocker la valeur dans variable start , vous devez transmettre l’ address of start à scanf .

Vous pouvez obtenir l’adresse d’une variable en utilisant l’opérateur & . Vous devez donc changer votre scanf en:

 scanf("%d", &start); 

Vous obtenez une erreur de segmentation lorsque vous utilisez scanf("%d", start); car start est une variable automatique et comporte une valeur aléatoire (aléatoire) avant de lui atsortingbuer une valeur. scanf considérera cette valeur aléatoire comme l’adresse à laquelle la valeur entrée par l’utilisateur doit être stockée. Désormais, lorsque scanf tente de stocker la valeur entrée par l’utilisateur dans cet emplacement d’adresse aléatoire, vous obtenez une erreur de segmentation car il est fort probable que votre programme ne soit pas autorisé à accéder à cet emplacement.