我正在尝试以常见的日志格式打印一些文本.
printf("%s - - [%s] %s %d %zu\n", ip, _time, row, statuscode, size);
Run Code Online (Sandbox Code Playgroud)
问题是订单混乱了.输出是:
200 1511 - - [20/Sep/2017:13:07:32 +0200] GET / HTTP/1.1
Run Code Online (Sandbox Code Playgroud)
我认为(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);
Run Code Online (Sandbox Code Playgroud)
它像预期的那样工作:
1. 127.0.0.1
2. 20/Sep/2017:13:11:24 +0200
3. GET / HTTP/1.1
4. 200
5. 151
Run Code Online (Sandbox Code Playgroud)
当我statuscode因某些原因添加时,问题似乎开始了.我不知道为什么.任何帮助表示赞赏.
这是我使用prinft()的函数:
static void handlelogging(char* method, struct sockaddr_storage client_addr, size_t size, char* row, int statuscode) {
char* ip; …Run Code Online (Sandbox Code Playgroud)