2014-03-06 5 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

첫 번째'strncpy' 다음에'strncat'이 필요합니다. – Roddy

+0

그랬습니다! :) 다시 부주의합니다. – chuckfinley

+1

BTW에서,'for' 루프는'printf ("% s", buffer)' –

답변

2

단순함 : strncpy은 이전에 버퍼가 보유한 모든 것을 덮어 씁니다.

마지막으로 strncpy은 줄 바꿈 문자를 입력하기 만하면 인쇄됩니다.

버퍼를 먼저 지우고 대신 strncat을 사용하십시오.

+0

허용 될 때 받아 들일 것입니다. 감사. – chuckfinley