初めてプログラムを作ろうと思って行き詰ってしまったので質問させて下さい。

double x ;
char str ;

x = 1.11 ;
sprintf(str, %f, x) ;

SetWindowText(hwnd, str) ;

これで表示される値が0.000になってしまうのです。
%fを%ld等に変えるとしっかり整数部分だけはでるのですが・・
どうしてだか教えてください(´・ω・`)