【发布时间】:2017-11-24 05:50:08
【问题描述】:
我目前正在 Debian 上用 C 语言开发一个 Web 应用程序(不要问我为什么)。 我制作了一种使用 POST 从表单中获取数据的方法:
const char* getParam(char* postResult, char* param)
{
char stock[30];
char* pointer = strstr(postResult, param);
while(*pointer != 61)
pointer++;
int i = 0;
++pointer;
while(*pointer != 38)
{
stock[i] = *pointer;
i++;
*pointer++;
}
stock[i] = 0;
const char *result;
if(stock[0] == 0) {
result = "";
}else{
result = stock;
}
return result;
}
调用此方法时,我将数据存储在由
声明的变量中char fname[40];
喜欢这个
strcpy(fname,getParam(ptr, "firstn"));
然后,当尝试显示数据时,它会显示奇怪的字符。
【问题讨论】:
-
别问我为什么为什么?您正在返回指向局部变量的指针。请遵循编译器上的警告。如果没有警告,请在 GCC 中启用所有可能的警告。
-
我使用 gcc,即使使用 -Wall 也不会显示任何警告,它只显示未使用的内容。
-
一定要使用
gcc -Wall ...(虽然不确定它是否看到这个) -
在这种情况下不会发出警告,因为您将本地缓冲区分配给指针。编译器此时丢失,无法发出警告。
-
@GuillaumeDrillaud 总是修复所有警告,即使是“不重要的警告”。如果你不这样做,几个月后你的代码会发出 3003434 警告,而你看不到重要的警告。