是的,关于本地缓冲区错误,您是对的,
但这不是我想要的,
如果我以不同的方式编辑,
char buff[16];
char* to_String(void) // Function
{
//char buff[16]; /*this is a local variable*/
sprintf(buff, "%s", "Hello World");
return buff;
}
int main(void) // main function
{
char *Initial_String_1 = to_String();
char *Initial_String_2 = to_String();
char *Initial_String_3 = to_String();
printf("%s", Initial_String_1 );
printf("%s", Initial_String_2 );
printf("%s", Initial_String_3 );
在这种情况下,所有字符串都是相同的,因为它们具有相同的缓冲区地址,
我想多开一点话题。
struct
{
long aaa;
short bbb;
int ccc;
char ddd;
.
.
. // the list goes on
}elements;
typedef struct
{
int lengt;
int *adress;
char name[10];
}_list;
char* to_String(long variable) // Function
{
sprintf(buff, "%ld", variable);
return buff;
}
int main (void)
{
_list My_List[] = {
{ sizeof(elements.aaa), &elements.aaa , to_string( elements.aaa) },
{ sizeof(elements.bbb), &elements.bbb , to_string( elements.bbb) },
{ sizeof(elements.ccc), &elements.ccc , to_string( elements.ddd) },
.
.
. //// the list goes on
};
我不知道,我是否让自己清楚。在这里,字符串必须填充到名称数组中,而不是为其分配地址。
我可能有语法错误。代码未经编译器测试。该想法仅用于说明目的。
我正在尝试为目的找到一种方法。
谢谢。