2014-03-06 84 views
0

由於某些原因我的頭文件沒有正確生成。C:生成一個緩衝區

我發送一個連接的套接字,連同文件名和響應代碼200. 但是,該方法不返回任何內容。

爲什麼?

void generate_header(int sock, char* filename, int response_code) { 
    int i = 0; 
    char buffer[BUFLEN]; 

    if (response_code == 200) { 
    strncpy(buffer, "HTTP/1.1 200 OK\n", sizeof(buffer)); 
    } else if (response_code == 404) { 

    } else if (response_code == 400) { 

    } else { 

    } 

    strncpy(buffer, "Content-Type: text/html\n", sizeof(buffer) - strlen(buffer) - 1); 
    strncpy(buffer, "Connection: close\n", sizeof(buffer) - strlen(buffer) - 1); 
    strncpy(buffer, "\n", sizeof(buffer) - strlen(buffer) - 1); 

    write(sock, buffer, strlen(buffer)); 


} 
+2

看起來你需要'strncat'後第一個'strncpy' – Roddy

+0

就是這樣! :)再粗心。 – chuckfinley

+1

順便說一下,你的'for'循環與剛纔的'printf(「%s」,buffer)' –

回答

2

簡單:strncpy覆蓋緩衝區之前保存的所有內容。

最近的strncpy只是放入一個換行符,這就是所有的打印內容。

首先清除緩衝區,然後使用strncat代替。

+0

當我被允許時會接受它。謝謝。 – chuckfinley