Я пишу программу, которая может преобразовать базовый номер 10 в другую базу между 2 и 16. Я написал свою функцию следующим образом, и я думаю, что это правильно:Функция производит пустую строку вместо вывода (C)
char* baseConversion(int number, int base, char *word)
{
if (number != 0) {
int x = number % base;
if(x > 9){
if(x == 10)
*word = 'A';
if(x == 11)
*word = 'B';
if(x == 12)
*word = 'C';
if(x == 13)
*word = 'D';
if(x == 14)
*word = 'E';
if(x == 15)
*word = 'F';
baseConversion(number/base, base, word+1);
}
else {
*word = x;
baseConversion(number/base, base, word+1);
}
}
}
у меня есть моя основная функция создана, чтобы проверить это:
int main(){
int num, base;
char word[20];
scanf("%d %d", &num, &base);
baseConversion(num, base, word);
printf("%s", word);
system("PAUSE");
}
Когда я подаю его на вход (мой тестовый пример был 15 16, который должен быть оценен до F), я вместо этого получаю слово null. Я не передаю свою строку правильно? Или моя арифметика указателя?
Примечание: Также я знаю, что это даст мне обратный ответ, я могу исправить это позже, когда я не получу нулевой ответ.
В вашей функции нет функции «return», которая должна возвращаться в соответствии с определением функции –
@KevalDoshi: Это нормально, поскольку OP игнорирует то, что будет возвращено, так или иначе :) –
Но не должен ли указатель разрешать его изменять вне оператора возврата? – user4159242