Итак, я студент первого курса 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»? Ваш код просто установит hexNumber в пробел, если это «0», что, как я думаю, никогда не произойдет. – sudo