小编aDi*_*dam的帖子

警告:函数返回局部变量的地址[默认启用]

#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);
}
Run Code Online (Sandbox Code Playgroud)

这会产生:

warning: function returns address of local variable [enabled by …
Run Code Online (Sandbox Code Playgroud)

c dynamic-allocation

5
推荐指数
2
解决办法
3万
查看次数

如何检测u_char类型缓冲区中的"\ r \n"?

我正在尝试使用C从数据包嗅探构建HTTP内容.现在,我能够将所有数据包保存在文件中,但我想摆脱第一个数据包中的标头.标头也被保存,因为它们是TCP有效负载的一部分.标题在双重"CR,LF"之后或"\r\n\r\n"HTTP响应中启动后的实际正文.

我如何检测,"\r\n"以便我只能保存它后面的缓冲区的一部分?缓冲区是u_char类型.我无法弄清楚命令.我看了谷歌和其他地方,但我主要找到C#命令 - 在C中没有.

我正在使用这个功能

void strtofcntnt(const u_char * Biffer, int size)
{
unsigned short iphdrlen;
struct iphdr *iph = (struct iphdr *)(Buffer + sizeof(struct ethhdr));
iphdrlen = iph->ihl*4;
Run Code Online (Sandbox Code Playgroud)

struct tcphdr *tcph = (struct tcphdr*)(Buffer + iphdrlen + sizeof(struct ethhdr));

char data[] = *(Buffer);
char rdata[] = strstr(data, "\r\n\r\n");
unsigned int i;
for (i=0;i<=sizeof(data);i++)
{
fprintf(logfile,"%c",(unsigned int)data[i]);
}}
Run Code Online (Sandbox Code Playgroud)

但它在编译期间在chara data []和char rdata []行中出错.错误表示初始化程序无效.

c http

0
推荐指数
1
解决办法
507
查看次数

标签 统计

c ×2

dynamic-allocation ×1

http ×1