C prob中的服务器客户端

C prob中的服务器客户端,c,sockets,file-upload,segmentation-fault,C,Sockets,File Upload,Segmentation Fault,我有两个节目。一个是客户端,另一个是服务器。用于通信的协议必须类似于HTTP,但是对于文件传输,GET file。问题在于客户端函数读取服务器发送的头(服务器完美地发送了头)。标题如下所示: 404*错误代码等* 模式获取*获取头部未知* AM 2969*始终不变* 文件名* 大小*文件大小* 端头 然后,该函数必须逐行读取recved缓冲区,并使用sscanf,将头的值读取到作为指针传递的结构中。问题是,无论我多么努力地编辑和试验代码,以查看错误,我都会被错误所淹没 void gethead

我有两个节目。一个是客户端,另一个是服务器。用于通信的协议必须类似于HTTP,但是对于文件传输,GET file。问题在于客户端函数读取服务器发送的头(服务器完美地发送了头)。标题如下所示:

404*错误代码等*
模式获取*获取头部未知*
AM 2969*始终不变*
文件名*
大小*文件大小*
端头
然后,该函数必须逐行读取
recv
ed缓冲区,并使用
sscanf
,将头的值读取到作为指针传递的结构中。问题是,无论我多么努力地编辑和试验代码,以查看错误,我都会被错误所淹没

void getheader(int sock,head_in*inheader)  
{  
    char n[10];  
    int c;  
    int k=0;  
    char buffer[101];  
    if(recv(sock,buffer,100,0)<=0) serror("Error recving\n",sock);  
        c=strlen(buffer);  
    for(int i=0;i<6;i++)
    {    
        int w=0;
        for(int j=0;j<c;j++)
        {
            if((buffer[j+k]=='\n')&&(buffer[j+k]!='\0')) break;
            w++;
        }

        char *line=(char*)malloc(w+1);
        for(int j=0;j<w;j++)
        {
            line[j]=buffer[j+k];
        }
        k=k+w+1;

        if(i==0) sscanf(line,"%d ",&inheader->code);
        if(i==1) sscanf(line,"%s %s",n,inheader->mode);
        if(i==2) sscanf(line,"%s %d",n,&inheader->am);
        if(i==3) sscanf(line,"%s %s",n,inheader->name);
        if(i==4) sscanf(line,"%s %d",n,&inheader->size);

        free(line);
    }                                               
}
void getheader(int sock,head_in*inheader)
{  
charn[10];
INTC;
int k=0;
字符缓冲区[101];
if(recv(sock,buffer,100,0)名称);
如果(i==4)sscanf(行,“%s%d”,n,&吸入口->尺寸);
自由线;
}                                               
}

您是否尝试过使用调试器?使用一个将帮助您确定发生SEGFULT的确切线路。在执行(int j=0;j)的
c
之前是否初始化了您的