Bem, eu já passei por este problema. Tente essa solução :
/* Nome do Programa : padrão de entrada */
#include <iostream>
#include<windows.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
#include <stdio.h>
/* biblioteca padrão para comandos i/o */
#include <stdlib.h>
/* biblioteca padrão para telas */
#include <locale.h> //necessário para usar setlocale
#include <string.h>//necessário para strncat
void gotoxy(int x, int y){
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),(COORD){x-1,y-1});
}
int main (void)
{
double numero;
int j;
char str_num[20];
gotoxy(30,1);
printf("A localidade corrente agora é %s \n",setlocale(LC_ALL,""));
gotoxy(30,2);
printf("====================================================\n");
printf("\n\n\nEntre com um valor decimal : ");
scanf("%lf", &numero);
sprintf(str_num, "%.2f", numero);
printf("\nValor float na entrada : %.2f - string resultante : { %s } \n\n", numero, str_num);
printf("\n\Eis a string com seus caracteres separados e formatada para duas casas decimais : { ");
for(j = 0;
str_num[j];
j++ ) printf("%c,", str_num[j] );
printf(" } ");
gotoxy(4, 20);
return 0;
}