реклама на сайте
подробности

 
 
4 страниц V  < 1 2 3 4 >  
Reply to this topicStart new topic
> Имею желание объявить массив строк с переменной длиной, Но не имею возможности :-(
GetSmart
сообщение Aug 2 2006, 15:37
Сообщение #16


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Супер!
Компилер съел и не поперхнулся! Ура zltigo!

Всем спасибо! Все свободны!

Только ещё одын маленький вопрос:
Как вставить первым байтом число?
Например в Паскале я бы мог написать
Код
str:string = #15 + "abcdef"
или даже так
str:string = chr(cnt) + "abcdef"
Ну а в Си как? Число - не переменная, а просто число или #define


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
zltigo
сообщение Aug 2 2006, 15:48
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(GetSmart @ Aug 2 2006, 18:37) *
Ну а в Си как?

В предыдущем примере вставлены числа 0 :-)
Дальше подсказка нужна? Правда разборка такой мешанины бывает не без проблем,
например, если захотите вставить "число" = 3 а за ним литерал "3".
Форма /x12 тоже допустима. А вообще через запятую, естественно можно
15, "absdef"

А книжку почитайте - надо!


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
rezident
сообщение Aug 2 2006, 15:51
Сообщение #18


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(GetSmart @ Aug 2 2006, 21:37) *
Как вставить первым байтом число?

Дык если его размерность не превышает байта, то и записывай его непосредственно. Если же превышает, то дели на байты.
1234=0x4D2 будет как
Код
massiv[] =
0x04, 0xD2,
"ofigennaja\0" \
"meshanina iz baitov\0kotorie\0"   \
"mozno izvrativshis" " ispolzovat"  \
" kak stroki";
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Aug 2 2006, 16:08
Сообщение #19


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Ещё вопросик созрел:
Какой максимальной длины можно создать строку внутри компилятора?

zltigo
Вы бы сами почитали книжку. Ну или поспорили с компилятором. Потому как ему не нравися ваше второе описание. Это то, которое и rezident предложил.

Так что не один я тут такой smile.gif

PS. А как писать внутри строки простым числом - я знал. Но это не то.


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
rezident
сообщение Aug 2 2006, 16:18
Сообщение #20


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(GetSmart @ Aug 2 2006, 22:08) *
zltigo
Вы бы сами почитали книжку. Ну или поспорили с компилятором. Потому как ему не нравися ваше второе описание. Это то, которое и rezident предложил.

Так что не один я тут такой smile.gif

Это видимо потому, что строка не заключена в фигурные скобки.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Aug 2 2006, 16:19
Сообщение #21


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(GetSmart @ Aug 2 2006, 19:08) *
Вы бы сами почитали книжку.

Спасибо! Пошел читать.
Писать больше не буду.
Все.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Aug 2 2006, 16:32
Сообщение #22


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Ладно, с числом в первом байте какое-то настоящее извращение. Не буду так делать.

Зато собираюсь объявлять подобные строки в макросах в любом месте текста. Как думаете, получится?
Типа вот этого:
Код
#define StartNameId 0
#define StartNameStr ""
#define AddNewNameId(a,B)  ...

И далее в тексте:

AddNewNameId(FirstNameId, "Ля-ля-ля, тополя");

Ну а в конце будет объявлено это:

const char massiv[] = StartNameStr;

Хотя, сомнения меня одолевают... Можно ли так в Си. В асме я примерно так делал.

rezident
Не-а. Это потому, что типы всё-таки разные. Примерно так: int и char * не могут находиться в одном массиве.

zltigo
Потом почитаете smile.gif Помогите сначала чем сможете.
Мне в отпуск пора, блин. А программа ещё далеко не готова. Меня ж с работы не отпустят. А вот билеты-то уже куплены.

Сообщение отредактировал GetSmart - Aug 2 2006, 16:26


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
rezident
сообщение Aug 2 2006, 16:43
Сообщение #23


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(GetSmart @ Aug 2 2006, 22:32) *
Мне в отпуск пора, блин. А программа ещё далеко не готова. Меня ж с работы не отпустят. А вот билеты-то уже куплены.

Млин, и ты в отпуск? А мы с директором вдвоем остаемся? А я когда же? blink.gif В "меховой сезон" что ли? w00t.gif
P.S. что-то ни один твой проект у меня в ИАР 4.40 не компилируется cranky.gif

Сообщение отредактировал rezident - Aug 2 2006, 16:44
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Aug 2 2006, 16:51
Сообщение #24


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Я вобщем-то попробывал вот так:
Код
const xByte ChTablNames[] =
  "\250"\
  "ofigennaja\0"\
  "meshanina iz baitov\0kotorie\0"\
  "mozno izvrativshis" " ispolzovat"\
  " kak stroki";

Так можно писать даже если во второй строке первым символом будет цифра. Минус только в том, что какая-то странная перекодировка этих цифр получается. Вместо 250 в бинарнике лежит 168 (0хА8).

Сообщение отредактировал GetSmart - Aug 2 2006, 17:01


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
diper
сообщение Aug 2 2006, 16:56
Сообщение #25


Частый гость
**

Группа: Свой
Сообщений: 94
Регистрация: 12-11-05
Из: Росиия, Нижний Новгород
Пользователь №: 10 750



восьмеричное 250 == десятичному 168 == шестнадцатеричному A8

ЗЫ в конце строк слеши можно убрать...

Сообщение отредактировал diper - Aug 2 2006, 16:58
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Aug 2 2006, 17:00
Сообщение #26


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Цитата(rezident)
А мы с директором вдвоем остаемся? А я когда же?

Да прибудет с вами создатель...RKSV !
Ну и студент в помошниках (на побегушках).

А по поводу 4.40 я даже не в курсах. На машине глав.констр. стоит 4.20 и там всё компилица!


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
rezident
сообщение Aug 2 2006, 17:09
Сообщение #27


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



У меня на такую комбинацию компилятор (для MSP430) не ругается.
Код
const unsigned char ChTablNames[] = "\xFA" \
"ofigennaja\0"\
"meshanina iz baitov\0kotorie\0"\
"mozno izvrativshis" " ispolzovat"\
" kak stroki";
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Aug 2 2006, 17:14
Сообщение #28


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



diper
Благодарю!

rezident
У меня тоже. И без слэшей в конце.

Всё-таки кто-нибудь знает, сколько максимальная длина строки в ИАРе?
___________

Хотя длину строки 19000 символов компилятор съел. А больше мне не надо.

Сообщение отредактировал GetSmart - Aug 2 2006, 17:23


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Aug 2 2006, 17:32
Сообщение #29


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Спецы!
Всё-таки можно сделать так, как описано в посте №22
А ?


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
_Bill
сообщение Aug 2 2006, 18:17
Сообщение #30


Местный
***

Группа: Участник
Сообщений: 416
Регистрация: 18-04-06
Из: Челябинск
Пользователь №: 16 219



Цитата(GetSmart @ Aug 2 2006, 18:05) *
zltigo
Да за кого Вы меня принимаете?! Да я... Да я... Да я пять ассемблеров знаю, во! Так что азы уже остались далееко позади.

Знаю я правила игры, и вроде как не нарушаю синтаксис.
по правилам можно написать:
Код
char massiv[10] = "abcdefgh";
А раз можно так написать, значит и присваивать байтовому массиву строки можно. А вот можно ли несколько строк в такой массив уложить - я в процессе выяснения. Ну если не ндравится, то можно первый элемент (число) "массива" убрать, но много-много строк в один массив впритык мне надо очень-очень. help me, please smile.gif

Уложить-то можно. Как только к ним доступ иметь будете?
Код
char       strings[] = {
                       "string1"
                       "string2"
                       "string3"
                       };

Будете количество ограничителей строк считать?

Сообщение отредактировал _Bill - Aug 2 2006, 18:19
Go to the top of the page
 
+Quote Post

4 страниц V  < 1 2 3 4 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 04:47
Рейтинг@Mail.ru


Страница сгенерированна за 0.02945 секунд с 7
ELECTRONIX ©2004-2016