您好我试图建立类似用printf的参数的函数返回一个指针为char
#include <stdio.h>
struct _data;
typedef struct _data data;
typedef struct _data {
double x;
double y;
} data;
const char* data_tostring(data* a) {
static char buffer[255];
sprintf(buffer, "%f %f", a->x, a->y);
return buffer;
}
int main(){
data a;
data b;
a.x = 0;
a.y = 0;
b.x = 1;
b.y = 1;
printf("%s %s \n", data_tostring(&a), data_tostring(&b));
return 0;
}
我预计产量为0 0 1 1码,但实际上我得到0 0 0 0我做出的一个static
关键字错误,返回值data_tostring()
?
感谢您的帮助。
不幸的是,你的解决方案正是我想避免:) – Fabio
@Fabio:为什么?如果你想使用相同的缓冲区,你需要对'printf'进行两次单独的调用。 –
@Fabio:使用“静态缓冲区”替代解决方案编辑我的答案。 –