Поврежденные ints и sscanf - и другие проблемы с памятью на C - PullRequest
0 голосов
/ 13 февраля 2011

У меня есть функция control() с резьбой.Он вызывает другую функцию, которая анализирует некоторые ответы сервера.Вот некоторая многословная инициализация, которая не решает мою проблему.

    int oct1 = 0;
    int oct2 = 0;
    int oct3 = 0;
    int oct4 = 0;
    int p1 = 0;
    int p2 = 0;

    sscanf(passive_ip, "%i,%i,%i,%i,%i,%i", &oct1, &oct2, &oct3, &oct4, &p1, &p2);

Я часто нахожу свои результаты испорченнымиНапример:

S->C: 227 Entering Passive Mode (128,111,40,221,206,170)
The Parsed Result: 128.111.40.221 206,170

S->C: 227 Entering Passive Mode (128,111,40,221,80,8)
The Parsed Result: 128.111.40.221 80,8170

S->C: 227 Entering Passive Mode (128,111,40,221,241,196)
The Parsed Result: 128.111.40.221 241,196

S->C: 227 Entering Passive Mode (128,111,40,221,70,216)
The Parsed Result: 128.111.40.221 70,2166

Обратите внимание, как старые значения добавляются / перемешиваются с новыми значениями.Любой ключ к пониманию того, почему это может произойти?

1 Ответ

1 голос
/ 13 февраля 2011

Похоже, вы как-то забыли прекратить passive_ip.Что бы вы ни делали, обязательно завершите его завершающим нулевым байтом.

...