string - масив символів

Документація

string


Текстові рядки можуть бути представлені двома способами. Можна використовувати тип даних String, який є ядром від версії 0019, або видати рядок з масиву типу char та припинити його нулем. Ця сторінка описує останній метод. Більше деталей про об’єкт String, який дає більшу функціональність, використовуючи більше пам’яті, на його сторінці.

Приклади

Усі способи нижче є правильними для оголошення рядків.

char Str1[15];
char Str2[8] = {'a', 'r', 'd', 'u', 'i', 'n', 'o'};
char Str3[8] = {'a', 'r', 'd', 'u', 'i', 'n', 'o', '\0'};
char Str4[ ] = "arduino";
char Str5[8] = "arduino";
char Str6[15] = "arduino";


Можливості для оголошення рядків

Оголосити масив символів без його ініціалізації — Str1

Оголосити масив символів (з одним додатковим символом) і компілятор буде додавати необхідний символ нуль — Str2

Явно додати символ нуль — Str3

Ініціалізувати рядковою константою у лапках, компілятор створить масив, який по розміру відповідатиме рядковій константі, і завершальний символ нуль — Str4

Ініціліазувати масив точним розміром та рядковою константою — Str5

Ініціалізувати масив, залишаючи додаткове місце для більших рядків — Str6

Припинення нулем

Як правило, рядки повинні завершуватися нульовим символом (ASCII код 0). Це дозволяє вказувати функціям (таким як Serial.print()), де закінчується рядок. В іншому випадку, вони читатимуть наступні байти пам’яті, які насправді не є частиною рядка.

Це означає, що рядок має мати місце для ще одного символу, крім тих, з яких складається текст. Саме тому Str2 and Str5 повинні мати вісім символів, навіть якщо «arduino» має лише сім — остання позиція буде автоматично заповнена символом нуль. Str4 буде автоматично створений розміром вісім символів, один символ для додаткового нуля. В Str3 явно включаємо символ нуль (пишемо самотійно).

Зверніть увагу, що можливо мати рядок без завершального нульового символу (наприклад, якщо Ви вказали довжину Str2 сім замість восьми). Це може порушити роботу більшості функцій, які використовують рядки, тому не потрібно робити цього навмисно. Проблемою буде, якщо функція дивно поводитиметься, і операції здійснюватимуться над символами, а не рядками.

Одинарні чи подвійні лапки?

Рядки завжди визначаються всередині подвійних лапок («Abc»), а символи завжди визначаються всередині одинарних лапок ('A').

Перенесення довгих рядків

Можна переносити рядки наступним чином:

char myString[] = "This is the first line"
" this is the second line"
" etcetera";


Масиви рядків

При роботі з великими обсягами тексту, такими як проект з рідкокристалічним дисплеєм, часто зручно встановлювати масив рядків. Оскільки самі рядки є масивами, насправді це приклад двовимірного масиву.

У коді нижче зірочка після типу даних char вказує на те, що це масив покажчиків. Всі імена масивів насправді є покажчиками, тому слід зробити масив масивів. Для початківців покажчики є однією з найбільш езотеричних для розуміння частин у C, але щоб ефективно використовувати покажчики тут, не треба детально їх розуміти.

Приклад

char* myStrings[]={"This is string 1", "This is string 2", "This is string 3",
"This is string 4", "This is string 5","This is string 6"};

void setup(){
Serial.begin(9600);
}

void loop(){
for (int i = 0; i < 6; i++){
   Serial.println(myStrings[i]);
   delay(500);
   }
}


Повернутись до головної

Коментарі 0

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.