Ich versuche, ein einfaches C-Programm zu schreiben, das die Eingabe einer Zahl übernimmt und die Summe der Ziffern sowie die Umkehrung der Zahl zurückgibt. Das Programm ist zur Zeit unvollständig, da ich beim Testen immer Fehler mit Segmentationsfehlern erhalte.C - Segmentierungsfehler (Core Dumped)
Hier ist der 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;
}
Durch einige Druck-Anweisungen, ich habe entdeckt, dass der Fehler höchstwahrscheinlich irgendwo in dieser Richtung auftritt:
printf("Enter a number: ");
scanf("%d", &num);
ich in der Lage bin zu betreten Nummer, aber sofort danach bekomme ich eine Meldung, Segmentierung Fehler (Core Dumped) und das Programm beendet. Wenn Sie das Programm mit sudo-Rechten ausführen, wird nur der Segmentierungsfehler ohne den "core dumped" -Teil der Nachricht angezeigt.
Debug-Info von Anweisungen zu befolgen here, dass die printf-Anweisung ist, um anzuzeigen scheint, was den Fehler verursacht, da dies die Ausgabe lautet:
(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
aber ich weiß nicht, was damit zu tun Informationen, damit ich den Fehler nicht beheben kann.
Ich habe meinen Professor um Hilfe mit dem gleichen Fehler im Labor gebeten, und er konnte keine Lösung finden. Dies ist jetzt in zwei verschiedenen Labors passiert, und außerdem bei diesem Projekt, das mich glauben lässt, dass es etwas mit dem Setup meines Computers und nicht mit dem Code selbst sein könnte.
Ich schreibe das Programm mit vim und kompilieren mit gcc. In den meisten Fällen benenne ich die Ausgabe des Compilers nicht um, also benutze ich "./a.out" Ich benutze Fedora 24 um diese Programme zu schreiben und auszuführen. Wenn weitere Informationen zu meinem System benötigt werden, lassen Sie es mich wissen.
undefiniertes Verhalten für das Bestehen eines 'int' zu' printf() 'mit'% s' Umwandlung. – EOF
Mein Compiler auf meinem Computer hat den Zeichenfolgenformatierungsfehler aus irgendeinem Grund nicht abgefangen. Ich habe die Datei auf den Linux-Server meiner Universität hochgeladen und dort kompiliert, was mir die Ausnahme und das Update gab. Danke euch allen für eure Hilfe, ich fühle mich für so ein kleines Problem wie ein Idiot. –