Если в браузере написать localhost:83 Выводится httpResponseHome. Необходимо если человек напишет localhost:83/home Вывести httpResponseFix. Подскажите пожалуйста как это сделать. Код (Text): void httpResponseHome(EthernetClient c) { c.println("HTTP/1.1 200 OK"); c.println("Content-Type: text/html"); c.println("Connnection: close"); c.println(); c.println(F(" <h1>HOME</h1> ")); } void httpResponseFix(EthernetClient c) { c.println("HTTP/1.1 200 OK"); c.println("Content-Type: text/html"); c.println("Connnection: close"); c.println(); c.println(F(" <h1>FIX</h1> ")); } void httpResponseRedirect(EthernetClient c) { c.println("HTTP/1.1 301 Found"); c.println("Location: /"); c.println(); } *********************************** if (client.available()) { char c = client.read(); if ((c == '\n') || (c == ' ' && nCommandPos>-1)) { sReturnCommand[nCommandPos] = '\0'; if (strcmp(sReturnCommand, "\0") == 0) { httpResponseHome(client); } else { processCommand(sReturnCommand); httpResponseRedirect(client); } break; } // Пробую вставить сюда этот код, он компилируется но написав localhost:83/home я не вижу httpResponseFix вместо этого загружается httpResponseRedirect и идет переход на httpResponseHome. // Что я не так делаю куда нужно вставить этот код? if (c == 'home') { httpResponseFix(client); } if (nCommandPos>-1) { sReturnCommand[nCommandPos++] = c; } if (c == '?' && nCommandPos == -1) { nCommandPos = 0; } }
Код (Text): if (c == 'home') Я вам в очередной раз НАСТОЯТЕЛЬНО рекомендую разобраться с тем что такое строки в Си и желательно еще и сам Си поучить, в противном случае подобные темы вы будите создавать тут с завидной регулярностью. Очень хорошая книга для начинающих.
Мне не хотелось бы терять время на изучение. В данном конкретном случае мне необходимо завершить маленький проект на arduino. Который будит делать необходимые мне задачи. В дальнейшем подключить и забросить железку далеко на шкаф, которая там будит работать. И не возвращаться больше к этому. У меня нет в планах быть разработчиком или же матерым программистам под arduino. Обещаю, возможно в будущем задам еще 1-2 вопроса и на этом все.
Вы правда думаете, что избегая изучения нужного прямо здесь и сейчас вы его теряете меньше? Отнюдь. К тому же, при изучении чего-либо невозможно потерять время, можно только обменять его на знания.
Я бы мог кое что сказать по поводу вашего ответа, но Unixon все сказал коротко и идеально верно. Вам нужна не удочка а рыба, что же будь по вашему. Дело в том что в Си не существует срок вовсе, их просто нет в том понимании в котором вы к ним привыкли в PHP. В Си есть лишь массив символов, в каждой ячейке один символ, и есть такое соглашение что конец "строки" определяется NULL байтом. Любая функция при работе со "строкой" работает последовательно с каждой ячейкой такого массива и определяет конец "строки" по этому нулевому байту, либо ей четко передается размер в виде количества байтов (ячеек). В вашем коде в переменную типа char которая как раз может содержать только ОДИН символ, вы считываете тот самый один символ, в итоге и сравнивать его вы можете только с одним символом. Одинарные кавычки в Си обрамляют лишь ОДИН символ, в вашем выражении c == 'home' нет смысла, компилятор конечно пропустил это, но в зависимости от компилятора он скорее всего сравнит вашу переменную просто с последнем символом и это выражение будет эквивалентно c == 'e' , но тут будет от компилятора зависеть (по крайней мере мой компилятор сделал именно так). Сейчас я вас дико опечалю, выражение var == "home" тоже работать не будет ... почему не спрашивайте, просто примите на веру. Хотя двойными кавычками обрамляются "строки". И такое выражение char text[] = "Hello word" будет компилятором любезно преобразовано в "строку" о которой я писал выше. Что вам в итоге нужно. Считать все символы в массив а потом использовать функции сравнения строк, либо подружится с классом String языка C++, вот он делает работу со строками нечто смахивающим на то к чему вы привыкли в PHP, и вот там конструкция string1 == string2 будет работать так как там перегружен оператор "==" но при условии что обе переменные это объекты этого класса. Вот тут есть описания стандартный функций работы со "строками" в С. а тут есть описание класса String.