// Если в массиве 200 символов, то "lol" не может начаться позже (200-3)-его символа,
// так как просто не влезет
// Возврат индекса иди -1, если не нашлось
int lol_index()
{
unsigned char i;
for (i = 0; i < 200-3; ++i) {
if (array[i] == 'l' && array[i+1] == 'o' && array[i+2] == 'l')
return i;
}
return -1; // не нашлось
}
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
strstr возвращает указатель на первый символ найденной подстроки (или 0, если она не найдена).
смотри по линку из моего сообщения описание функции.
Чтобы получить смещение от начала строки, надо из указателя p вычесть адрес начала массива (указатель на его первый элемент, к которому в выражениях автоматически приводится имя массива). Как у меня там и написано
Ну и у тебя в коде Printf не достанет до p, так как p -- локальная в lol_index()
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
короче говоря выдает адресс первого символа?) а если у меня в массиве несколько 'LOL' ?надо будет читать функцией заново+ смещение на адресс первого слово?
Да, адрес первого символа. Если нужно найти все, то опять вызывать, пока до 0 не дойдёт.
А вот смещение на один символ или на длину слова поиска -- зависит от требований.
Если нужно найти так:
const char *p = array; // начинаем искать от начала массива
const char *pstr = "lol";
while ( (p = strstr(p,pstr)) != 0 ) { // заменяем текущий адрес начала поиска новым найденным и проверяем на 0
printf( "Index %d\n", p - array);
++p; // продолжаем искать со следующего символа
}
"lol" можно искать с через-одного, так как второй символ искомого не равен первому, но если искать "aaa", то надо начинать со следующего, чтобы в "123aaaa456" найти два "aaa"
const char *p = array; // начинаем искать от начала массива
const char *pstr = "lol";
int step = strlen(pstr);
while ( (p = strstr(p,pstr)) != 0 ) {
printf( "Index %d\n", p - array);
p += step; // продолжаем искать с символа за концом найденного
}
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
выдает ошибку
*** ERROR L104: MULTIPLE PUBLIC DEFINITIONS
SYMBOL: БЛА
MODULE: Timers.obj (TIMERS)
Не могу понять где собака зарыта (( Ведь юзаю директивы препроцессора #ifndef
Уже решил проблему. Просто ночью спать надо, а не коды ковырять ) Не замечал косяк один. Сейчас другая проблема. Не могли бы вы мне на пальцах объяснить как перевести число из Hex в Dec? Что то в голову ничего путного не пришло Мне надо обработать сигнал с АЦП и результат вывести на LED индикатор.
Chip115 писал(а):Ага, тогда народ тупой уйдет туда, где ему помогут. Гений,блин.
Уважаемый, пока Вы не научитесь правильно излагать мысль, Вас будут везде "тыкать носом в то место, где Вы нагадили". Сядьте и почитайте что такое hex и dec. Только нормально читайте, без "зачем мне это нужно, я и так всё знаю". И тогда Вы поймёте, что задаёте тупые вопросы.
Вам задали вопрос:
Что это за АЦП такой, который результат в хексах даёт?
Где ответ на него ? Правильно... Вы сами не знаете что хотите и не понимаете о чём говорите. Разберитесь сначала в своих мыслях, потом уже задавайте вопрос.
Во вторых. Подобным умникам, "угрожающим" куда-то там уйти, обычно говорят - Валите, Вас тут никто не держит, и никто ничем не обязан.
где в массиве numbers записаны сегменты, которые должны активироваться при показе какой либо цифры.
Вывод на индикатор уже посимвольно из массива в динамической индикации.
PS Chip115 запомните, в Мк и вообще в любом компьютере все числа хранятся в двоичном формате.А то что вы пишете 0xFF или 255 это для вашего удобства сделано и уже просто компилятор переводит в бинарный формат.
Алекс, нехорошо говорите, минус вам вроде модератор, а так грубо.
Вполне адекватный ответ на его грубость. И модераторство тут не причём, мы такие-же участники.
Человеку вроде нужно
Вот оно, ключевое слово - "вроде". Вроде, вроде, .... и все гадают - "а что-же ему нужно" ? А ему всего-лишь нужно правильно изложить свою мысль. А он, видимо, сам в них запутался.
То, что ему нужно выводить на Led, это я видел и об этом речи не шло. Речь шла о переводе из hex в dec. Это самый глупый вопрос новичков, не желающих читать и думать. hex и dec - это всего-лишь представление числа в разных системах, т.е. разная форма его записи, которую сам компилятор и переведёт в нужный ему формат.
Из разряда флуда.Каждый новичок имеет право на ошибку или заблуждение, между прочим вы сами начали говорить о том что вопрос тупой и не нужно на него отвечать.Тут его и прорвало.Три ответа и ни в одном нет того, что он спросил.Может для вас это элементарно, а новички могут не понимать что нужно в другом месте искать, а не там, где они думают ответ есть.
судя по вашим репликам нужно знать половину ответа чтобы задать вопрос.
Уж простите, если что не так сказал, но такое мое мнение.
Можно не игнорируя, не оскорбляя и не отвечая прямо направить человека в нужное русло.Даже можно довольно просто наводящими вопросами довести до истины.