私は初年度Cの学生です。私は、ユーザーが入力した特定のベースでタイムテーブルを作成する必要があるプロジェクトに取り組んでいます。私はそれをほぼ完全に終了しましたが、テーブルから先行ゼロを削除することに問題があります。文字列の値をCに再割り当て
これは、単純な基数10の表のようです。
[email protected] ~/cs211/project1 $ ./timesTable 10
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
---|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|
0 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 |
1 | 00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 |
2 | 00 | 02 | 04 | 06 | 08 | 10 | 12 | 14 | 16 | 18 |
3 | 00 | 03 | 06 | 09 | 12 | 15 | 18 | 21 | 24 | 27 |
4 | 00 | 04 | 08 | 12 | 16 | 20 | 24 | 28 | 32 | 36 |
5 | 00 | 05 | 10 | 15 | 20 | 25 | 30 | 35 | 40 | 45 |
6 | 00 | 06 | 12 | 18 | 24 | 30 | 36 | 42 | 48 | 54 |
7 | 00 | 07 | 14 | 21 | 28 | 35 | 42 | 49 | 56 | 63 |
8 | 00 | 08 | 16 | 24 | 32 | 40 | 48 | 56 | 64 | 72 |
9 | 00 | 09 | 18 | 27 | 36 | 45 | 54 | 63 | 72 | 81 |
---|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|
各数字から先行ゼロを削除したいが、それを動作させるのに苦労している。機能コードは次のようになります。
私のロジックを使用してchar * toHex(int n, int q){
static char hexNumber[4] = {0x00};
char digits[16]={ '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
unsigned int un = q;
int i;
for(i=1; i>=0; i--){
hexNumber[i] = digits[un%n];
un=un/n;
}
if(strcmp(hexNumber, "0") == 0){
hexNumber = " ";
}
return hexNumber;
}
、私はゼロだけでは表示されませんが、私はエラーが出るように空「」の文字列にhexNumber文字列を再割り当てしようとしている:
timesTable.c: In function ‘toHex’:
timesTable.c:68:13: error: incompatible types when assigning to type ‘char[4]’ from type ‘char *’
hexNumber = " ";
すべてのヘルプ大いに感謝します。
ごめんなさい。私はここに新しいと書式設定のハングを取得していない –
"memcpy(hexNumber、" "、2)"を使用してエラーを修正したが、ゼロは削除されません。 –
先頭のゼロを削除すると、「01」が「1」になるはずですか? "0"の場合、あなたのコードは単にhexNumberをスペースに設定しますが、これは起こるとは思いません。 – sudo