2016-03-31 1 views
0

Der entsprechende Code istAuf der Kompilierung Ich erhalte "Fehler: Vergleich zwischen verschiedenen 'char *' Zeigertypen und 'char (*) [200]' fehlt eine gegossene" on line

void setup() 
{ 
int respCode; 
char * pResp; 
const char http[] = "HTTP/1.1"; 
char response[] = "HTTP/1.1 200 OK"; 
    if (strstr(response,http) == &response) { 
     pResp = strchr(response," ") + 1; 
     respCode = atoi(pResp); 
    } 
} 

ich bin versucht, Bestimmen Sie zuerst, ob das char-Array mit "HTTP/1.1" beginnt, und wenn ja, setzen Sie das nächste durch Leerzeichen getrennte Token (das eine ganze Zahl darstellen soll) in die Integer-Variable "respCode".

bekomme ich folgende Fehlermeldung:

error: comparison between distinct pointer types 'char*' and 'char (*)[200]' lacks a cast" on line

Ich habe nach Antworten gesucht, aber noch nicht ein für diesen speziellen Fehler gefunden, geschweige denn die detaillierte Erklärung, warum es ein Fehler ist.

+0

was versuchen Sie zu erreichen? & wird nicht benötigt –

+2

Hat vielleicht jemand Ihnen kürzlich gesagt, dass "in C++ ein Array ein Zeiger ist"? Wenn ja, glaube ihm nicht - vielleicht hilft das. –

+0

Können Sie ein [MCVE] (http://stackoverflow.com/help/mcve) posten? Es gibt nicht genug Code hier, um zu bewerten. – TriskalJM

Antwort

3

Ich denke, Sie möchten überprüfen, ob http am Anfang von response auftritt.
strstr (char *str1, char *str2) gibt einen Zeiger auf das erste Auftreten von str2 in str1, so dass Sie es zu response, nicht zu &response vergleichen sollten.

Ändern Sie Ihre Bedingungserklärung in if (strstr(response,http) == response).
Siehe ein Arbeitsbeispiel here.

+0

Besser wäre es, 'strncmp' anstelle der Suche nach der ganzen 'Antwort' ... –

+0

Ich bearbeitet die Frage, um ein Beispielprogramm mit dem Problem zu enthalten. Zugegeben, es gibt einige Kompilierungsfehler, die meisten, wenn nicht alle, die sich mit char-Arrays, ihren Zeigern und char-Array-Funktionen befassen. Klar verstehe ich diese nicht, obwohl ich mehrere Ansätze gelesen und ausprobiert habe. –

+0

@wadecampbell hast du diese antwort gelesen? – anukul

Verwandte Themen