今天我在编写一个在C中使用static char*
的函数时遇到了问题。
让我解释一下:我的函数在我们发送给她的缓冲区中找到'\n'
,如果'\n'
后面有任何文本,它必须将此文本存入名为{{1}的静态变量中}。事实是它存储它,但是在函数的两次调用之间不保留rest
的内容。我不明白为什么会发生这种情况,尽管它被声明为静态变量。
到目前为止,这是我的功能:
(rest
表示该函数未找到return (1)
和\n
,\0
表示函数找到了return (0)
,(\n
)表示函数找到return -1
)
EOF
答案 0 :(得分:3)
一个主要问题是每次调用该函数时,重新分配 NULL
到rest
,而不是最初只是初始化rest
。
只需删除分配,默认情况下static
局部变量为零初始化(即指针将为NULL
)。
如果您确实希望显式初始化它,请在声明中执行此操作。 e.g:
static char *rest = NULL;