J'essaye d'écrire un programme C simple qui prend l'entrée d'un nombre et retourne la somme des chiffres du nombre aussi bien que l'inverse du nombre. Le programme est actuellement incomplet car je continue à rencontrer des erreurs de segmentation lors du test.C - Défaut de segmentation (core dumped)
Voici le code:
#include <stdio.h>
#include <string.h>
int sumdigits(int);
int main() {
int num; // The number to be read
int reverse; // The reverse of the input
int sum; // The sum of the digits
printf("Enter a number: ");
scanf("%d", &num);
sum = sumdigits(num);
printf("Sum of digits: %s", sum);
}
int sumdigits(int number) {
int sum = 0;
int temp = number;
while (temp != 0) {
sum += (temp % 10);
temp /= 10;
}
return sum;
}
En utilisant des instructions d'impression, je l'ai découvert que l'erreur la plus probable se produit quelque part dans ces lignes:
printf("Enter a number: ");
scanf("%d", &num);
Je suis en mesure d'entrer dans un nombre, mais immédiatement après cela, je reçois un message disant Segmentation Fault (core dumped) et le programme se termine. L'exécution du programme avec les privilèges sudo fournit uniquement une erreur de segmentation, sans la partie "core dumped" du message.
informations de débogage fournies par les instructions suivies here semble indiquer que l'instruction printf est ce qui est à l'origine de l'erreur, car cela est la sortie:
(gdb) run
Starting program: /home/sschmalz/Documents/Classes/CIS308/proj1/debug
Enter a number: 123
Program received signal SIGSEGV, Segmentation fault.
0x00007ffff7a62fb4 in vfprintf() from /lib64/libc.so.6
Cependant, je ne sais pas quoi faire avec ce informations, donc je ne peux pas résoudre l'erreur.
J'ai demandé l'aide de mon professeur pour cette même erreur en laboratoire, et il n'a pas été capable de trouver une solution. C'est ce qui est arrivé dans deux laboratoires différents maintenant, plus avec ce projet, ce qui me fait penser que cela peut être quelque chose avec la configuration de mon ordinateur plutôt qu'avec le code lui-même. J'écris le programme en utilisant vim et en compilant avec gcc. Dans la plupart des cas, je ne renomme pas la sortie du compilateur, donc je l'utilise avec "./a.out". J'utilise Fedora 24 pour écrire et exécuter ces programmes. Si d'autres informations sur mon système sont nécessaires, s'il vous plaît faites le moi savoir.
comportement non défini pour le passage d'un '' int' à printf() '' avec une conversion% en s'. – EOF
Mon compilateur sur mon ordinateur n'a pas attrapé l'erreur de formatage de chaîne pour une raison quelconque. J'ai téléchargé le fichier sur le serveur Linux de mon université et je l'ai compilé là-bas, ce qui m'a donné l'exception et le correctif. Merci à tous pour votre aide, je me sens comme un idiot pour un si petit problème. –