Прежде всего вы должны выделить буфер для filename
. Следующая проблема - ваше смещение.
char buffer[512] = "GET /testfile.htm HTTP/1.0";
char filename[512]; // I want *filename to hold only "/testfile.htm"
msgLen = recv(connecting_socket, buffer, 512, 0);
strncpy(filename, buffer+4, msgLen-4-9);
//the first parameter should be buffer+4, not 5. Indexes are zero based.
//the second parameter is count, not the end pointer. You should subtract
//the first 4 chars too.
Также вы должны убедиться, что вы добавили ноль в конце строки, так как strncpy
этого не делает.
filename[msgLen-4-9] = 0;
Вы также можете использовать memcpy
вместо strncpy
, так как вы хотите просто скопировать несколько байтов:
memcpy(filename, buffer+4, msgLen-4-9);
fileName[msgLen-4-9] = 0;
В любом случае, убедитесь, что вы подтвердили свой ввод. Возможно, вы получили неверный ввод из сокета.