Разбор сообщения с помощью 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;
      }
   }
}

}

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

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

1 ответ

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

char network_number[6]; // This should be increased in size.
Другие вопросы по тегам