因此,我是第一年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