您好我試圖建立類似用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:使用「靜態緩衝區」替代解決方案編輯我的答案。 –