|
Текстовая строка без нулевого байта, как избавиться от terminating null? |
|
|
|
Jun 21 2009, 12:17
|

Любитель
    
Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695

|
Цитата(HARMHARM @ Jun 21 2009, 16:05)  const char a[4] = { 'A','B','C','D'}; Это я знаю, но это крайний случай, слишком неудобно. Во первых, надо вручную подсчитывать число знаков, во вторых, юзать неудобоваримую запись текста... Гораздо приятнее работать с видом "Some text", а всю рутинную работу должен делать компилятор. Странно, что в Си нет встроенного удобного механизма для исключения лишнего нулевого байта, ведь не всегда же он нужен!
|
|
|
|
|
Jun 21 2009, 12:29
|
Профессионал
    
Группа: Свой
Сообщений: 1 266
Регистрация: 22-04-05
Из: Киев
Пользователь №: 4 387

|
Цитата main.cpp... так C или C++? Не поверил, что не фунциклирует static char a[4] = "ABCD"; и проверил в IAR 4.11B для MSP430 - всё путём
--------------------
aka Vit
|
|
|
|
|
Jun 21 2009, 12:35
|
Гуру
     
Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881

|
Цитата(sonycman @ Jun 21 2009, 16:33)  и С++... А по что тогда дезинформацию вносите? Вы же спрашивали - "ЗЫ: и вообще, интересно, как в Си получить строку без нуля на конце?" если в C++ то свой класс такой строки написать.
|
|
|
|
|
Jun 21 2009, 13:30
|

Любитель
    
Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695

|
Цитата(SM @ Jun 21 2009, 17:17)  Это зачем? А у меня эти строки лежат внутри строкового USB дескриптора, и длина всего дескриптора включает в себя, кроме строки, ещё несколько полей. Поэтому из общей длины дескриптора приходится вычитать 2, чтобы не передавать лишние нули - неизвестно, как их воспримет хост... Зато, с другой стороны, изменить содержимое строк очень просто  Спасибо за помощь!
|
|
|
|
|
Jun 21 2009, 13:40
|
Профессионал
    
Группа: Свой
Сообщений: 1 266
Регистрация: 22-04-05
Из: Киев
Пользователь №: 4 387

|
Цитата А у меня эти строки лежат внутри строкового USB дескриптора Если это единый текстовый "блок", то может быть удобной передача его как одной строки. Тогда можно записать это одной строкой, но "не совсем обычным способом"(С) (дальше было "- в кредит и за советские рубли"): Код const char descriptor[]= "Строка 1" "Строка 2" "Прибамбас" "Фишечка";
--------------------
aka Vit
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|