<C语言> 指针函数 sprintf

写自定义函数时不知道哪里出错了,下面是函数的任务:

返回一个包含分数表示法的字符串,例如 "3/8"。(必须用sprintf)

typedef struct
{
int zaehler;
int nenner;

}bruch;

char *inStringUmwandeln(bruch b)
{
char *str;
sprintf(str, "%d/%d", b.zaehler,b.nenner);
return str;

}


char *inStringUmwandeln(char *buf, bruch b)
{
    // char *str; //光有指针,没有分配内存
    sprintf(buf, "%d/%d", b.zaehler, b.nenner);
    return buf;
}
int main()
{
    bruch b = {3, 8};
    char buf[100] = {0};
    inStringUmwandeln(buf, b);
    printf("%s", buf);
    return 0;
}