scanf — анализ сообщения с помощью sscanf в переполнении стека

Я пытаюсь проанализировать следующее «входящее_мессаж» для различных переменных, и код работает отлично, пока функция не завершится. Тогда я получаю следующую ошибку:
«Ошибка проверки времени выполнения № 2 — стек вокруг переменной network_number» поврежден ».

Это код, где я получаю сообщение об ошибке:

char* incoming_message = "\r\n+COPS: (2,\"MOVISTAR\",,\"12345\"),(1,\"AMENA\",,\"12346\"),(1,\"E AIRTEL\",,\"12347\"),,(0-4),(0,2)\r\n";
int stat;
char network_name[16];
char network_number[6];
char processed_message[128];
const char* pch_msg = "%d, %[^,],, %[^')']";

// I introduce spaces to remove the inverted commas
for(int i=2; i < strlen(incoming_message); i++)
{
if (incoming_message [i] == '"')
{
processed_message[i] = ' ';
}
else
{
processed_message[i] = incoming_message [i];
}
}

for(int i=2; (incoming_message[i]!='\r') || i < strlen(incoming_message); i++)
{
if(incoming_message[i] == '(')
{
i++;
int const sscanf_res = sscanf(&processed_message[i], pch_msg, &stat, &network_name, &network_number);
if (sscanf_res != 3)
{
break;
}
}
}

}

У кого-нибудь есть идеи, почему я получаю эту ошибку? Есть ли другой способ сделать это более простым?

Заранее спасибо!

0

Решение

Как следует из названия, эта ошибка возникает, когда вы пишете больше символов, чем выделенного пространства. В этом случае вы записываете 7 символов в массив, имеющий место для 6 символов.

char network_number[6]; // This should be increased in size.
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]