ベース10の数値を他のベースで同等のものに変換するプログラムを作成していますが、実行しようとするとセグメンテーションフォルトが発生します。whileループ内のセグメンテーションフォールト(C)
これは、これまでのコードです:GDBとプリントステートメントでエラーをチェックを通じて
#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;
}
、私はエラーがライン14で何かに由来結論に達しました:
while ((num % base) > 1) {
私は比較的新しいC言語です。私がやったことのほとんどはJavaにあります。
あなたの診断がマークをたくさん逃しているので、GDBをより使いやすくする方法を学ぶ必要があります。 http://users.ece.utexas.edu/~adnan/gdb-refcard.pdf –
私は学生で、私のクラスでは簡単にしか議論されていません。 refカードをありがとう、それは間違いなく将来便利になるでしょう。 – Root21