일부 텍스트를 공용 로그 형식으로 인쇄하려고합니다.printf() - 잘못된 순서를 인쇄합니다. 개별적으로 인쇄 할 때 작동합니다.
printf("%s - - [%s] %s %d %zu\n", ip, _time, row, statuscode, size);
문제는 순서가 모두 뒤섞여 있다는 것입니다. 출력은 다음과 같습니다
200 1511 - - [20/Sep/2017:13:07:32 +0200] GET/HTTP/1.1
내가 (1511
)이 인쇄 점점 ip
생각 . 이유를 모르겠다.
나는이처럼를 인쇄 할 때 :
printf("1. %s\n", ip);
printf("2. %s\n", _time);
printf("3. %s\n", row);
printf("4. %d\n", statuscode);
printf("5. %zu\n", size);
이 그것은 같은 기대 작품 :
1. 127.0.0.1
2. 20/Sep/2017:13:11:24 +0200
3. GET/HTTP/1.1
4. 200
5. 151
내가 어떤 이유로 statuscode
를 추가 할 때 문제가 시작 보인다. 나는 이유가 없다. 어떤 도움을 주셔서 감사합니다. 나는 문제가 row
에서 오는 생각
static char* getip(struct sockaddr_storage client_addr) {
char ipstr[20];
struct sockaddr_in *s;
s = (struct sockaddr_in *) &client_addr;
/**
* Converts network address (s) in the IPV_4 family into a string.
*/
return strdup(inet_ntop(AF_INET, &s->sin_addr, ipstr, sizeof ipstr));
}
strchr(...)
는 데이터 유형이 일치하는지 확신으로 수정? 그렇지 않으면 정의되지 않은 동작이 발생합니다. –[MCVE] (https://stackoverflow.com/help/mcve) – vasek
디버깅 도움말을 찾는 질문 (이 코드가 작동하지 않는 이유는 무엇입니까?)에는 원하는 문제, 오류 및 필요한 최단 코드가 포함되어야합니다. 질문 자체에서 그것을 재현하는 것. 분명한 문제 성명이없는 질문은 다른 독자에게 유용하지 않습니다. 참조 : [mcve]를 만드는 방법 ._ –