2016-06-16 2 views
1

Я был googling, но я не нашел простой float для char, используя функцию sprintf. До сих пор - это все, что я написал в моем небольшом разделе кода. Проблема в том, что я всегда получаю возврат 0.float to char array в C, sprintf

int main() 
    { 
     float num_input[9]; 
     printf("Enter a real number: "); 
     scanf("%f", &num_input); 
     printf("%f", num_input); 
     char str_num[9]; 
     sprintf(str_num, "%f", &num_input); 
     printf(str_num); 

     return 0; 
    } 

Спасибо всем, кто помог! Наконец я увидел, что я сделал не так, и узнал больше. Окончательный код написан:

float num_input[9]; 
printf("Enter a real number: "); 
scanf("%f", &num_input); 
char str_num[9]; 
int index = 0; 
sprintf(str_num, "%f", num_input[index]); 
+0

'поплавок num_input [9];' -> 'поплавок num_input, и' Е (str_num); ' -> 'puts (str_num);' –

+2

Посмотрите на свои предупреждения о компиляторе и исправьте их, даже не обратившись за помощью. Или спросите о предупреждениях, если вы их не понимаете. Это спасет всех много времени. – kaylum

+0

В дополнение к комментариям @SouravGhosh: 'sprintf (str_num,"% f ", & num_input);' -> 'sprintf (str_num,"% f ", num_input);' – kaylum

ответ

3

sprintf(str_num, "%f", &num_input); неправ. Вы должны использовать что-то вроде:

sprintf(str_num, "%f", num_input[index]); /* 0 <= index < 9 */ 
/*     ^  ^^^^^ */ 

После этого держать пальцы скрещенными, что str_num не переполнения.

Помните, что "%f" спецификатора из printf семейства функции должен иметь соответствующие double или float (float становится double после продвижения аргументов по умолчанию).


Может быть, вы должны сделать подобное исправление для scanf и printf также:

scanf("%f", &num_input[0]); 
printf("%f", num_input[0]); 
+1

. Зачем вам нужно 'float num_input [9]' в первую очередь. Вся программа будет работать с одним «float num_input», а OP не использует другие 8 поплавков в массиве. –

+0

@RishikeshRaje Я использую его на самом деле, но я не включил эту часть своего кода. –

+1

Большое вам спасибо! Я, наконец, получил код отсортированный! \t 'float num_input [9]; \t printf ("Введите реальный номер:"); \t scanf ("% f", & num_input); \t char str_num [9]; \t int index = 0; \t sprintf (str_num, "% f", num_input [index]); ' –