Der Code ist in Ordnung. Bei der Ausführung bekomme ich nur die Nachricht (Segmentierungsfehler (Core Dump)). Jede Hilfe würde sehr geschätzt werden!Segmentierungsfehler (Core Dumped) - C Keine Probleme mehr mit Segmentierungsfehler. Jetzt kann ich debuggen. danke
Das Programm soll die Basis der eingegebenen Argumente ändern. zum Beispiel ./convert 10 2 5 6 7 Eingang Basis: 10 Ausgangsbasis: 2 Argumente Eingabebasis: 5 6 7
fange ich gerade c zu lernen ... jede Hilfe würden Sie bieten könnten sei großartig! Danke!
Bearbeitet: Keine Probleme mehr mit Segmentierungsfehler. Vielen Dank.
#include <stdio.h>
#include <string.h>
int makeInt(char digits[]) {
int num = 0;
int i = 0;
while (digits[i] != '\0') {
num = num * 10 + (digits[i] - '0');
i++;
}
return num;
}
//converts from original base to base 10
int makeBase10(char digits[],int a) {
int num = 0;
int pow = 1;
int i = 0;
int x = 0;
int length = strlen(digits);
char k;
for (i = length -1; i > -1; i--){
k = digits[i];
if(k <= '9' && k >= '0'){
x = (int)k - '0';
}
else{
x = (int)k - 'a' + 10;
}
num = num + (x*pow);
pow = pow * a;
}
return num;
}
//changes number from base 10 to knew base
// and returns as string
char * toString(char str[], int num, int b) {
int i = 0;
char x;
int mod = 0;
while(0 < num){
mod = num % b;
if(mod < 10 && mod > -1){
x = (char)(num + '0');
}
else{
x = (char)(num - 10 + 'a');
}
str[i] =(int) x;
num = num/b;
}
str[i] = '\0';
int length = i + 1;
int j = 0;
char *reverse;
for(i = length -2; i >= 0; i--){
reverse[i] = str[j];
j++;
}
reverse[length-1] = '\0';
return reverse;
}
int main(int argc, char *argv[]) {
int i;
int num;
int a;
int b;
char str[33]; //binary could be up to 32 + '\0'
a = makeInt(argv[0]); //input base
b = makeInt(argv[1]);; //output base
printf("make int worked and input works");
num = 0;
i = 2;
while (i < argc) {
num = makeBase10(argv[i], a);
printf("%s\n", toString(str, num, b));
i++;
}
}
Wie wäre es mit einigen Debuggen? Fügen Sie einige Ausdrucke hinzu, um herauszufinden, wie weit Ihr Programm kommt, bevor es abstürzt. Sie werden herausfinden können, welches Bit abstürzt und wahrscheinlich das Problem herausfinden - alles ohne die Frage "debug my code" auf SO zu stellen. – John3136
Ich würde mir auch den Rückwärtszeiger genau ansehen. – nfproductions
kann ich nicht, ich legte eine printf-Anweisung in der ersten Zeile in Haupt und immer noch nichts ... es muss ein Fehler sein, wie ich diesen Code formatiert habe ... ehrlich gesagt bin ich nicht vertraut mit dieser Sprache und bin einfach unsicher, wie es weitergeht. – Graham