Вопросы по С/С++ (СИ)

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить
Вымогатель припоя
Сообщения: 598
Зарегистрирован: Сб авг 09, 2025 22:08:28

Сообщение Nranddek »

#include <string.h>
Реклама
Поставщик валерьянки для Кота
Сообщения: 1916
Зарегистрирован: Сб май 05, 2012 20:24:52
Откуда: KN34PC, Болгария

Сообщение veso74 »

Код: Выделить всё

#include <stdint.h>
#include <stdbool.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
Добавляю как автоматом. Есть ли они там, или eще не заявлены - добавляю. Привык к удобствам. uint32_t вижу "издалека". Кроме unsigned long int, которому никак не могу привыкнуть. А если есть: unsigned long long int - заставляет меня смеяться ... (со временем будет вероятно unsigned long long long long int ...) Самое главное - во всей программе - единообразное выражение типов. Все позволяет легко переключаться между кодами для разных контроллеров с течением времени. (частично пользуюсь переводчиком)
Контактная информация:
Реклама
Вымогатель припоя
Сообщения: 598
Зарегистрирован: Сб авг 09, 2025 22:08:28

Сообщение Nranddek »

veso74, ну, зато на стандартные типы работает подсветка синтаксиса, что визуально удобно. Конечно, unsigned long long long long int уже будет перебор, но unsigned long пока ещё пишу.
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 347
Зарегистрирован: Чт май 20, 2021 13:33:05

Сообщение muravei_ »

[uquote="Nranddek",url="/forum/viewtopic.php?p=4740929#p4740929"]#include <string.h>[/uquote]
Спасибо, помогло . Ну где тут логика? Ни в жизнь бы не догадался .

Скомпилировалось , теперь будем искать настоящие ошибки! :)
Реклама
Эиком - электронные компоненты и радиодетали
Вымогатель припоя
Сообщения: 598
Зарегистрирован: Сб авг 09, 2025 22:08:28

Сообщение Nranddek »

muravei_, просто считается, что программирование, это полноценное, поэтапное и системное обучение. А без него либо догадываться, либо гуглить, либо поиском по файлам. А логика есть: работа со строками - это работа с массивами данных в памяти.
Реклама
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 347
Зарегистрирован: Чт май 20, 2021 13:33:05

Сообщение muravei_ »

[uquote="Nranddek",url="/forum/viewtopic.php?p=4741062#p4741062"]А логика есть: работа со строками - это работа с массивами данных в памяти.[/uquote]
Ну да, логика сильно притянутая за уши.
Реклама
Друг Кота
Аватара пользователя
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск

Сообщение WiseLord »

Логика простая: функция memcpy объявлена в strings.h. Очевидно, что его надо заинклюдить.
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 6673
Зарегистрирован: Пт сен 10, 2021 15:19:36
Откуда: Протвино

Сообщение AlexS4 »

по этой логике инклюдить надо под 50 хидеров :)))

...ну или хотяб штук по 5 всреднем для каждой архитектуры если кросс. :)

$ grep -rc -e'memcpy *(' /usr/lib/*/include/ /usr/include/ |grep -v :0
/usr/lib/avr/include/avr/pgmspace.h:2
/usr/lib/avr/include/string.h:4
....
/usr/include/linux/netfilter/xt_sctp.h:1
/usr/include/linux/cec-funcs.h:11
...
/usr/include/x86_64-linux-gnu/bits/string_fortified.h:1
...
/usr/include/wchar.h:1
/usr/include/X11/Xlibint.h:1
...
/usr/include/tcl8.6/tcl-private/compat/string.h:1
...
/usr/include/c++/10/bits/locale_facets.h:4
...
/usr/include/string.h:3
/usr/include/obstack.h:4
$ grep -rc -e'memcpy *(' /usr/lib/*/include/ /usr/include/ |grep -v :0 |wc -l
48
$
Друг Кота
Сообщения: 5334
Зарегистрирован: Вт фев 21, 2012 13:51:55
Откуда: Начинающий

Сообщение petrenko »

[uquote="veso74",url="/forum/viewtopic.php?p=4740943#p4740943"]... (со временем будет вероятно unsigned long long long long int ...) ..[/uquote]

Hy шутка xopoшая :))
, а вот ежели cypьёзно - кто может подсказать - возможно ли в с# "встроить" дополнительные ( машинно-поддерживаемые ! ) типы данных ?
И , если возможно, то как сие "вкошачить" ?
< виртуальная "кнопочка" >--( WWW ) <- Убедительная просьба интересующимся старыми компьютерами типа РК86 - не пишите в теме в барахолке, пишите Ваши вопросы в ( лс ) пожалуйста
Контактная информация:
Вымогатель припоя
Аватара пользователя
Сообщения: 678
Зарегистрирован: Пн сен 15, 2025 08:43:23
Откуда: Маленький СССР посреди шариатской республики

Сообщение linux_rulezz »

[uquote="muravei_",url="/forum/viewtopic.php?p=4741029#p4741029"]Ну где тут логика?[/uquote]
Т.е. просто набрать в терминале "man memcpy" - не судьба? А там как раз в самом начале пишут, какой header-файл нужен…

Добавлено after 2 minutes 23 seconds:
[uquote="Nranddek",url="/forum/viewtopic.php?p=4740946#p4740946"]зато на стандартные типы работает подсветка синтаксиса[/uquote]
Достаточно настроить подсветку в своем IDE. Но обычно таки современные IDE все типы из stdint.h подсвечивают. А писать "int" или "long" - можно в конце-концов нарваться на косяк. Как нарывались люди при переходе с 32- на 64-битную архитектуру. Или обратно (отладил ты, скажем, алгоритм на компе, а потом скопипастил на микроконтроллер).
Windows must die!
Контактная информация:
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 347
Зарегистрирован: Чт май 20, 2021 13:33:05

Сообщение muravei_ »

Есть 92 байтовых массива констант разной длины , которые надо по очереди засовывать в функцию.
Как это проще организовать?
Сделать массив указателей?
Хотелось бы с минимумом возни.
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18678
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

Массив по определению состоит из элементов одинаковой длины. Функции тоже как бы работают с параметрами известной (и одной и той же) длины... Странная у вас постановка задачи. Расшифруйте.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 3487
Зарегистрирован: Вт окт 22, 2013 04:37:23
Откуда: Казань

Сообщение smacorp »

Видимо имеется, ввиду, что один массив с константами одной длины, второй массив другой длины и так далее. Хотели сказать, что массивы просто разные.
Платы для HLDI - установки лазерной засветки фоторезиста.
Фоторезист Ordyl Alpha 350
Жидкое олово для лужения плат (видео) - самое лучшее и только у меня.
Паяльные маски XV501T-4 и KSM-S6189 (5 цветов).
Заказ печатных плат - pcbsmac@gmail.com
Друг Кота
Аватара пользователя
Сообщения: 15605
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Может таки структура поможет?
:roll:
Модератор
Аватара пользователя
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля

Сообщение Аlex »

muravei_ писал(а):Сделать массив указателей?
Зачем ? Ваши массивы (точнее, их имена) - и есть указатели. Просто передавайте их в функцию, с самой длиной (вторым аргументом). Стандартный ход.
Контактная информация:
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 347
Зарегистрирован: Чт май 20, 2021 13:33:05

Сообщение muravei_ »

[uquote="ARV",url="/forum/viewtopic.php?p=4756037#p4756037"]известной (и одной и той же) длины...[/uquote]
Ну, да. Байт -8бит , а в военное время - 12 ! :))
smacorp писал(а):массивы просто разные
Так тоже нельзя - кто-нибудь решит , что строчные или массив дуба, бука ... :)
BOB51 писал(а):Может таки структура поможет?
Возможно. Скорее массив структур.
Аlex писал(а): и есть указатели. Просто передавайте их в функцию
Само собой.
Но как передавать в цикле? Как перебирать имена?

Несколько мыслей:

1. Сделать двумерный массив с указателями и размерами каждого.
2. Если быть уверенным , что массивы в памяти расположены последовательно - передавать указатель на первый и прибавлять к нему длину каждого .
3. Слить все в один массив и каждый раз прибавлять длину .
Модератор
Аватара пользователя
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля

Сообщение Аlex »

muravei_ писал(а):Но как передавать в цикле? Как перебирать имена?
Ну, об этом в предыдущем посте Вы не сказали ничего. Оставалось только гадать.
По этому поводу у Вас уже есть мысли. Не думаю, что Вам тут что-то новое расскажут. Делайте как Вам удобнее, учитывая концепцию и нюансы алгоритмов.
Контактная информация:
Поставщик валерьянки для Кота
Сообщения: 1916
Зарегистрирован: Сб май 05, 2012 20:24:52
Откуда: KN34PC, Болгария

Сообщение veso74 »

идея: вспомните, как кодируются шрифты с переменной длиной (по точкам) букв, напр. для OLED и TFT - соберите один массив со смещениями и данными. напр.: https://github.com/greiman/SSD1306Ascii ... er19.h#L63

Но информации о применении мало. Подозреваю, следующий вопрос будет о сложностях управления. Приведите пример или фрагмент ваших данных, сузим круг вариантов.
Контактная информация:
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 347
Зарегистрирован: Чт май 20, 2021 13:33:05

Сообщение muravei_ »

[uquote="Аlex",url="/forum/viewtopic.php?p=4756193#p4756193"]Ну, об этом в предыдущем посте Вы не сказали ничего.[/uquote]
:shock: А это что ? ... :)
muravei_ писал(а):надо по очереди засовывать в функцию.
Добавлено after 2 minutes 12 seconds:
[uquote="veso74",url="/forum/viewtopic.php?p=4756201#p4756201"]соберите один массив со смещениями и данными.[/uquote]

См.
muravei_ писал(а):3. Слить все в один массив и каждый раз прибавлять длину .
Модератор
Аватара пользователя
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля

Сообщение Аlex »

muravei_ писал(а): А это что ? ...
надо по очереди засовывать в функцию.
Это :

Код: Выделить всё

func(arr1);
func(arr2);
func(arr3);
func(arr4);
По-очереди ? Да !
Не было ни слова про циклы и имена.
muravei_ писал(а):См.
Говорю же - ничего Вам тут нового не расскажут.
Вы же прекрасно понимаете, что такое массив, что такое указатели, как с ними работать, .... По этому :
Аlex писал(а):Делайте как Вам удобнее, учитывая концепцию и нюансы алгоритмов.
Если собираетесь адресовать конкретный объект(в Вашем случае - массив) по индексу, то без контейнера не обойтись.
Хотя, кто-нибудь может выборку из кучи объектов сделать и на switch-case :)))
Контактная информация:
Ответить

Вернуться в «Разные вопросы по МК»