2016-06-16 8 views
1

Ich habe googeln, aber ich habe nicht gefunden, ein einfaches float char mit dem Sprintf-Funktion. Bisher - das ist alles, was ich in meinem kleinen Codeabschnitt geschrieben habe. Das Problem ist, dass ich immer eine 0 zurückbekomme.float-to-char-Array in 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; 
    } 

Vielen Dank an alle, die geholfen haben! Ich habe endlich gesehen, was ich falsch gemacht habe und habe mehr gelernt. Der letzte geschriebene Code war:

+0

'float num_input [9];' -> 'float num_input;' und 'printf (str_num);' -> 'puts (str_num);' –

+2

Sehen Sie sich die Warnungen Ihres Compilers an und korrigieren Sie diese, bevor Sie nicht einmal nach Hilfe fragen. Oder fragen Sie nach den Warnungen, wenn Sie sie nicht verstehen. Das wird jedem viel Zeit sparen. – kaylum

+0

Zusätzlich zu den @SouravGhosh-Kommentaren: 'sprintf (str_num,"% f ", & num_input);' -> 'sprintf (str_num,"% f ", num_input);' – kaylum

Antwort

3

sprintf(str_num, "%f", &num_input); ist falsch. Sie sollten so etwas wie verwenden:

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

Danach werden die Daumen, dass str_num nicht überläuft.

Denken Sie daran, dass "%f" Spezifizierer von printf Familie der Funktion (wird floatdouble nach Standardargument Förderung) eine passende double oder float haben sollte.


Vielleicht sollten Sie die ähnliche Lösung für scanf und printf auch machen:

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

Warum brauchen Sie 'float num_input [9]' an erster Stelle. Das ganze Programm wird mit einem einzigen 'float num_input' arbeiten und OP benutzt nicht die anderen 8 floats im Array. –

+0

@RishikeshRaje Ich benutze es tatsächlich, aber ich habe diesen Teil meines Codes nicht enthalten. –

+1

Vielen Dank! Ich habe endlich den Code sortiert! \t 'float num_input [9]; \t printf ("Eine reelle Zahl eingeben:"); \t scanf ("% f", & num_input); \t char str_num [9]; \t int index = 0; \t sprintf (str_num, "% f", num_input [index]); ' –