|
|
  |
Имею желание объявить массив строк с переменной длиной, Но не имею возможности :-( |
|
|
|
Aug 2 2006, 15:37
|
.
     
Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753

|
Супер! Компилер съел и не поперхнулся! Ура zltigo! Всем спасибо! Все свободны! Только ещё одын маленький вопрос: Как вставить первым байтом число? Например в Паскале я бы мог написать Код str:string = #15 + "abcdef" или даже так str:string = chr(cnt) + "abcdef" Ну а в Си как? Число - не переменная, а просто число или #define
--------------------
Заблуждаться - Ваше законное право :-)
|
|
|
|
|
Aug 2 2006, 15:48
|

Гуру
     
Группа: Свой
Сообщений: 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
|
|
|
|
|
Aug 2 2006, 15:51
|
Гуру
     
Группа: Свой
Сообщений: 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";
|
|
|
|
|
Aug 2 2006, 16:08
|
.
     
Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753

|
Ещё вопросик созрел: Какой максимальной длины можно создать строку внутри компилятора? zltigoВы бы сами почитали книжку. Ну или поспорили с компилятором. Потому как ему не нравися ваше второе описание. Это то, которое и rezident предложил. Так что не один я тут такой  PS. А как писать внутри строки простым числом - я знал. Но это не то.
--------------------
Заблуждаться - Ваше законное право :-)
|
|
|
|
|
Aug 2 2006, 16:19
|

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

|
Цитата(GetSmart @ Aug 2 2006, 19:08)  Вы бы сами почитали книжку. Спасибо! Пошел читать. Писать больше не буду. Все.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Aug 2 2006, 16:32
|
.
     
Группа: Участник
Сообщений: 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Потом почитаете  Помогите сначала чем сможете. Мне в отпуск пора, блин. А программа ещё далеко не готова. Меня ж с работы не отпустят. А вот билеты-то уже куплены.
Сообщение отредактировал GetSmart - Aug 2 2006, 16:26
--------------------
Заблуждаться - Ваше законное право :-)
|
|
|
|
|
Aug 2 2006, 16:51
|
.
     
Группа: Участник
Сообщений: 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
--------------------
Заблуждаться - Ваше законное право :-)
|
|
|
|
|
Aug 2 2006, 17:00
|
.
     
Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753

|
Цитата(rezident) А мы с директором вдвоем остаемся? А я когда же? Да прибудет с вами создатель...RKSV ! Ну и студент в помошниках (на побегушках). А по поводу 4.40 я даже не в курсах. На машине глав.констр. стоит 4.20 и там всё компилица!
--------------------
Заблуждаться - Ваше законное право :-)
|
|
|
|
|
Aug 2 2006, 18:17
|
Местный
  
Группа: Участник
Сообщений: 416
Регистрация: 18-04-06
Из: Челябинск
Пользователь №: 16 219

|
Цитата(GetSmart @ Aug 2 2006, 18:05)  zltigoДа за кого Вы меня принимаете?! Да я... Да я... Да я пять ассемблеров знаю, во! Так что азы уже остались далееко позади. Знаю я правила игры, и вроде как не нарушаю синтаксис. по правилам можно написать: Код char massiv[10] = "abcdefgh"; А раз можно так написать, значит и присваивать байтовому массиву строки можно. А вот можно ли несколько строк в такой массив уложить - я в процессе выяснения. Ну если не ндравится, то можно первый элемент (число) "массива" убрать, но много-много строк в один массив впритык мне надо очень-очень. help me, please  Уложить-то можно. Как только к ним доступ иметь будете? Код char strings[] = { "string1" "string2" "string3" }; Будете количество ограничителей строк считать?
Сообщение отредактировал _Bill - Aug 2 2006, 18:19
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|