2015-10-10 3 views
0

У меня есть эта глобальнаяОсновная строка сравнения вызывает сбой

const char PROTOCOL_SET_WIFI_CONNECTION[]= "setWifi"; 

//or this one 
//#define PROTOCOL_SET_WIFI_CONNECTION "setWifi" 

Тогда, когда я пытаюсь сравнивать строки я получаю много проблем (аппаратные проблемы, такие как аварии)

char *header = strtok (incomingData,":"); 
if (strcmp (header,PROTOCOL_SET_WIFI_CONNECTION) == 0) 

// делать вещи

  1. Что не так с моим сравнением (без этого "если" все хорошо)
  2. , который является предпочтительным -define или const? (MCU)
+0

Вы не проверяете, является ли 'header'' NULL' ... – Kninnug

+0

Что такое 'incommingData'? Вы уверены, что двоеточие находится в строке, а 'strtok' не возвращает' NULL'? Вы действительно проверили с помощью отладчика, что авария происходит там, где вы думаете? –

+0

Я уверен, что это не null (я проверяю, если его значение null задолго до того, как я верну это значение). Более того, это значение действительно даже в случае возникновения проблем. только когда я удалю это, если все работает так, как ожидалось. – Curnelious

ответ

2

Возможно, это

После завершающего нулевого символа СИЛ находится в вызове strtok, все последующие вызовы этой функции (с нулевым указателем в качестве первого аргумента) возвращают null указатель.

strtok reference

Попробуйте проверить, если строка NULL прямо на перед erroring линии?