Ich schreibe ein Programm, um Basis-10-Zahlen in ihre Entsprechungen in anderen Basen zu konvertieren, aber ich bekomme immer einen Segmentierungsfehler, wenn ich versuche, es auszuführen. so weitSegmentierung Fehler in der While-Schleife (C)
Dies ist der Code:
#include <stdio.h>
int base;
int num;
char* num2[50];
int x =0;
int main(){
printf("Input a number in base 10 and a base (2-16) that you would like to convert to in this format: 100 2\n");
fflush(stdout);
scanf("%d%d",&num, &base);
printf("%d%d", num, base); fflush(stdout);
while ((num % base) > 1){
printf("%d", x); fflush(stdout);
if(num % base == 10)
num2[x] = "A";
else if (num % base == 11)
num2[x] = "B";
else if (num % base == 12)
num2[x] = "C";
else if (num % base == 13)
num2[x] = "D";
else if (num % base == 14)
num2[x] = "E";
else if (num % base == 15)
num2[x] = "F";
else
*num2[x] = num % base;
num = num % base;
x++;
printf("%d, %s", num, num2[x]); fflush(stdout);
}
while (x >= 0){
printf("%s", num2[1]);
fflush(stdout);
x--;
}
printf("\n");
fflush(stdout);
return 0;
}
Durch die Fehler mit GDB und print-Anweisungen überprüft, habe ich zu dem Schluss gekommen, dass der Fehler von etwas in Zeile stammt 14:
while ((num % base) > 1) {
Ich bin relativ neu in C, das meiste, was ich getan habe, war in Java.
Sie müssen lernen, GDB besser zu verwenden, da Ihre Diagnose das Zeichen viel verfehlt. http://users.ece.utexas.edu/~adnan/gdb-refcard.pdf –
Ich bin ein Student und es wurde nur kurz in meiner Klasse diskutiert. Danke für die Ref-Karte, das wird in Zukunft definitiv nützlich sein. – Root21