【发布时间】:2013-06-23 03:15:21
【问题描述】:
#include <string.h>
#include<stdio.h>
#include<stdlib.h>
char *chktype(char *Buffer, int Size)
{
char *strng = "Content-Type: ";
int sz;
char *found = strstr (Buffer, strng);
char *found1 = strstr(found, "\r\n");
sz=strlen(found)-strlen(found1);
char type[sz];
strncpy(type, found1, sz-1);
return(type);
}
void main(){
char *buffer = "HTTP/1.1 200 OK\r\nDate: Tue, 25 Jun 2013 16:27:16
GMT\r\nExpires: -1\r\nCache-Control: private,
max-age=0\r\nContent-Type: text/html;
charset=UTF-8\r\nContent-Encoding: gzip\r\nServer:
gws\r\nX-XSS-Protection: 1; mode=block\r\nX-Frame-Options:
SAMEORIGIN\r\nTransfer-Encoding: chunked\r\n\r\n";
char *extension = chktype (buffer, sizeof(buffer));
printf("%s\r\n", extension);
}
这产生:
warning: function returns address of local variable [enabled by
default]
...我不知道这里出了什么问题。当我运行它时,我希望输出是text/html; charset=UTF-8,但它是乱码。
警告的确切含义是什么?
【问题讨论】:
-
您不应该从函数返回本地数组。如图所示,一种方法是将它们声明为静态,这将使它们在整个执行期间持续存在。另一种是使用 malloc 分配它们。
-
你还能期待什么?您的代码一团糟,没有人可以阅读它,我敢肯定,即使您也看不到。 格式化。
-
另外,回滚到 v1。没有人想要那些
??s。我们已经有他们了。
标签: c dynamic-allocation