В моем коде мне требуется возможность конвертировать любой целочисленный ввод в нужную базу между 2 и 16. Проблема заключается в том, что на выходе говорится, что мой код работает успешно, я не получаю никакого вывода. Я пробовал в NetBeans и терминале linux. Мой код показан ниже:Почему мой код C не выводит результат?
/*
* File: main.c
* Author: Tyler Weaver
* Assignment 1: Takes a decimal value and converts it to a desired base
*
* Created on October 11, 2014, 11:57 PM
*/
#include <stdio.h>
void toBase(unsigned decimal, unsigned base, char *newNum);
int main(int argc, char** argv) {
const int MAX_LEN = 32;
char newNum[32];
unsigned decimal, base;
printf("Enter a decimal value followed by a desired base: ");
scanf(" %u", &decimal);
scanf(" %u", &base);
toBase(decimal, base, newNum);
printf("%u equals ", decimal);
//Print the array out in reverse order
unsigned count;
for (count = 0; count != '\0'; count++);
for (count--; count >= 0; count--) {
printf("%c", newNum[count]);
}
printf(" (base-%u)\n", base);
return 0;
}
/**
* Converts a number to desired base
* @param decimal the number which to convert
* @param base the base to convert decimal to
* @param newNum the character array which to store the conversion
*/
void toBase(unsigned decimal, unsigned base, char *newNum) {
const unsigned ASCII_DIFF = 97;
char *p;
for (p = newNum; decimal > 0; p++) {
unsigned temp = decimal % base;
*p = (temp < 10) ? temp : ((char) temp - 10 + ASCII_DIFF);
}
}
Мой выход в NetBeans:
Enter a decimal value followed by a desired base: 6 4
RUN SUCCESSFUL (total time: 1s)
Он появляется то же самое на Linux терминал, а также. Я попытался разместить printf-инструкции после операторов scanf, но они тоже не отображаются. Любая информация будет полезна.
Um .. 'count> = 0' в вашем условии продолжения цикла? Ну, 'count' объявлен' unsigned count; '. Можете ли вы придумать * любое * время, когда это условие не будет выполнено? (и не говорите, когда 'count' меньше нуля, потому что он не подписан, так что этого не произойдет). – WhozCraig
Какова цель 'for (p = newNum; decimal> 0; p ++)'? Не должно ли условие «while» включать «p»? – wallyk
Если вы ищете конец newNum, «for (count = 0; count! = '\ 0'; count ++);" не будет этого делать. Я удивлен, что вы не получаете ошибку сегментации, когда count == 0xFFFFFFFF. Подсказка: 0 == '\ 0'. –