fprintf(fp,"IP: %d: %.*s\n",
ip,
strstr(strstr(p->data, "User-Agent:"),"\n") - strstr(p->data, "User-Agent:"),
strstr(p->data, "User-Agent: ") );
fclose(fp);
Привет Все, как вы можете видеть, в приведенном выше заявлении я пытаюсь списать только заголовок User Agent из указателя char, который содержит все данные пакета http. Дело в том, что, поигравшись со строковым форматом, я пришел к формату%. * S, который позволяет мне динамически выбирать количество символов, которые будут напечатаны в файле, а затем печатать их. В основном код выполняет сначала печать int, затем число символов от появления «User-Agent:» до следующего следующего символа новой строки, и это количество символов передается, начиная с там, где «User-Agent:» начинается со всей строки данных пакета. Я знаю, что все довольно грязно, но работает нормально. За исключением того, что он не работает в sprintf.
Пожалуйста, сохраните все мои трудные слова! Любая помощь приветствуется!
char *stat;
sprintf(stat,"%.*s\0",
strstr(strstr(p->data, "User-Agent:"),"\n") - strstr(p->data, "User-Agent:"),
strstr(p->data, "User-Agent: ")) ;