- значение переменной в строковом массиве, pavlinux, 03:47 , 04-Дек-17 (1)
> OCR_sh[0]=100; strcpy(OCR_sh[0], "100");
- значение переменной в строковом массиве, ACCA, 20:28 , 04-Дек-17 (2)
- У него нет переменной OCR2
- Он не может присвоить значение 100 элементу массива OCR_sh[0], у них тип разный
- Строки "OCR1A" и "OCR1B" в его примере занимают по 6 байтов, он уже вылез за границы char[5]. Хорошо, если компилятор углядит и отругает
- Ему нельзя пользоваться strcpy, разобьёт и руки порежет. Только strncpy
- значение переменной в строковом массиве, creapt, 21:50 , 04-Дек-17 (3)
OCR2, OCR1B, OCR1A это регистры. Опишу подробнее: нужно регистры поместить в массив, сравнивать и изменять их значения.запись strcpy(OCR_sh[0], "100"); работает, но это немного не то, что хотел. OCR_sh[3][5]={"OCR2","OCR1A","OCR1B"}; - возможно, это я неверно написал.
- значение переменной в строковом массиве, pavlinux, 22:44 , 04-Дек-17 (5)
> ... но это немного не то, что хотел.Какой вопрос, такой ответ. :) > OCR_sh[3][5]={"OCR2","OCR1A","OCR1B"}; - возможно, это я неверно написал.
Ты тут написал двухмерный массив из элементов типа char, если его раскрутить, то выглядеть будет так: OCR_sh[3][5]= {{'O','C','R','2','\0'}, {'O','C','R','1','A','\0'}, {'O','C','R','1','B','\0'}}; Каждый элемент в кавычках и есть значение переменной, и их 15 штук. 100 можно присвоить только одной из них.
OCR_sh[0][0]=100;
- значение переменной в строковом массиве, pavlinux, 22:35 , 04-Дек-17 (4)
> У него нет переменной OCR2AI скорректировал вопрос. > Он не может присвоить значение 100 элементу массива OCR_sh[0], у них тип разный Я же смог :) В С всё int, кроме float (этот тоже int, но замороченный) На самом деле, это грязные хаки олдскульных микроконтрольщиков, всех кто пишет "для себя".
Так они коряво объявляют: Есть три строки, не больше 5 байт в каждой char OCR_sh[3][5]={"OCR2","OCR1A","OCR1B"}; Так они заменяют строки: зато гарантия, что лишнее не попадёт в регистры. strcpy(OCR_sh[0], "Вротмне"); strcpy(OCR_sh[1], "ноги,"); strcpy(OCR_sh[2], "дайтедве"); Не все компиляторы проверяют размер переменных и матерятся > [li] Строки "OCR1A" и "OCR1B" в его примере занимают по 6 байтов, Пофег сколько занимают, выделено только 3 раза по 5 > он уже вылез за границы char[5]. Хорошо, если компилятор углядит и > отругает Нед, размер задаётся объявлением: OCR_sh[3][5] и того 15 раз по CHAR_BIT > Ему нельзя пользоваться strcpy, разобьёт и руки порежет. Только strncpy если всё под контролем, то можно.
- значение переменной в строковом массиве, ACCA, 23:04 , 04-Дек-17 (6)
>> Он не может присвоить значение 100 элементу массива OCR_sh[0], у них тип разный > Я же смог :) В С всё int, кроме float (этот тоже > int, но замороченный) Ты старый жулик, путающий студентов. "100" и 100 - это очень разные вещи. >> [li] Строки "OCR1A" и "OCR1B" в его примере занимают по 6 байтов, > Пофег сколько занимают, выделено только 3 раза по 5
Ни разу не пофиг, оно же инициализировано. Поэтому puts(OCR_sh[1]); puts(OCR_sh[2]); Напечатает то ли OCR1AOCR1B OCR1B то ли OCR1A то ли OCR1A OCR1B
Это если выравнивание выручит. > Нед, размер задаётся объявлением: OCR_sh[3][5] и того 15 раз по CHAR_BIT
Потому и можешь наползти 6-байтовыми строками друг на друга, а последней строкой - на что повезёт. >> Ему нельзя пользоваться strcpy, разобьёт и руки порежет. Только strncpy > если всё под контролем, то можно.
Намекаешь, что он не поленится проверить длины строк и размеры буферов?
- значение переменной в строковом массиве, pavlinux, 23:12 , 04-Дек-17 (7)
> Напечатает то ли Ничего не знаю, в ТЗ не было условия про печать :) > то ли... то ли ...то ли > puts(OCR_sh[2]); Такой хак с двухмерным масcивом, превратит его в указатель (начинающейся с адреса OCR_sh[2][0]), на одномерный массив размером [5] puts((char(*)[5])OCR_sh[2]); > Намекаешь, что он не поленится проверить длины строк и размеры буферов? Я думаю автор вааааще невдупляет чего творит :) Или препод спецом скопипастил такой гадцкий код. OCR1A, OCR1B - это регистры таймера AVR ATmega http://dfe.petrsu.ru/koi/posob/avrlab/mega16tcnt1.html
|