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

 
 
> работа со строками avr gcc
Alex_Golubev
сообщение Oct 1 2017, 14:28
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 280
Регистрация: 18-03-17
Пользователь №: 95 877



Привет.
Скажите пожалуйста. Если написать:
Код
const uchar Fill_lye_ENG[] PROGMEM = "step1";

окончиться ли строка нулем '\0' ? Просто не понятно если строка записанная во флешь не окончиться нулем '\0' то как понять где конец строки?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
SSerge
сообщение Oct 4 2017, 10:10
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 719
Регистрация: 13-09-05
Из: Novosibirsk
Пользователь №: 8 528



Цитата(Alex_Golubev @ Oct 1 2017, 21:28) *
окончиться ли строка нулем '\0' ? Просто не понятно если строка записанная во флешь не окончиться нулем '\0' то как понять где конец строки?

В Вашем случае завершающий нуль будет.
Строка в кавычках (называется строковый литерал) всегда имеет завершающий нуль, и когда этот литерал используется для инициализации массива нуль тоже будет присутствовать в массиве во всех случаях, кроме одного. В одном частном случае можно наступить на грабли.
Пример из стандарта С, раздел 6.7.9 Initialization:
Код
EXAMPLE 8    The declaration
char s[] = "abc", t[3] = "abc";
defines ‘‘plain’’ char array objects s and t whose elements are initialized with character string literals.
This declaration is identical to
char s[] = { 'a', 'b', 'c', '\0' },
t[] = { 'a', 'b', 'c' };

Массив t получается без завершающего нуля.
К счастью такое допустимо только в С, а С++ такое уже не позволяет.


--------------------
Russia est omnis divisa in partes octo.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме


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

 


RSS Текстовая версия Сейчас: 23rd June 2025 - 18:43
Рейтинг@Mail.ru


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