共通のログ形式でテキストを印刷しようとしています。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));
}
でそれを修正するには、あなたは、データ型が一致していることを確認していますか?それ以外の場合は、未定義の動作があります。 –
投稿する[MCVE](https://stackoverflow.com/help/mcve) – vasek
デバッグのヘルプを求める質問(このコードが動作しないのはなぜですか?)には、必要な動作、特定の問題またはエラー、必要な最短コードが含まれている必要があります質問自体にそれを再現する。明確な問題文がない質問は、他の読者にとって有用ではありません。参照:[mcve]を作成する方法._ –