
Масиви символьних рядків
Рядки символів можна об'єднувати в масиви довільної розмірності. На практиці найбільш поширена робота з двомірними масивами символів (одномірними масивами рядків символів).
В залежності від опису рядки символів зберігаються в неперервній області пам'яті як двомірні символьні масиви або в різних областях пам'яті у вигляді окремих рядків. Перший спосіб опису:
charmasstr[4][10]={"green", "red", "white", "blue"};
визначає прямокутний масив символів. Всі чотири рядки матимуть однакову довжину. Короткі рядки доповнюються справа символами '\0' до вказаної довжини (до 10 символів).
Опускаючи другий індекс, будемо мати адреси кожного з рядків, наприклад, запис masstr[2] визначає вказівник на рядок "white", а запис *(masstr[2]+j) визначає j-й символ цього рядка (j = 0,...,9).
Для доступу до символів можна використовувати також спосіб, характерний для числових масивів, наприклад, запис masstr[0][1] визначає символ 'r' рядка "green".
Другий спосіб опису:
char *prtstr[4]={"green", "red", "white", "blue"};
визначає масив із 4-х вказівників на рядки різної довжини. Значення рядків, можливо, будуть зберігатися не підряд, а в різних областях пам'яті.
Для доступу до j-го символу і-го рядка можна скористатися наступним виразом; *(ptrstr[i]+j).
Організація стандартного виводу та вводу символьних даних. Форматний вивід даних
Здійснюється за допомогою функції printf, яка має змінну кількість аргументів. Прототип функції приведений вище у таблиці.
Звертання до функції:
printf ("форматний рядок", арг1,арг2,...);
Форматний (керуючий) рядок використовується для того, щоб задати кількість та типи аргументів і може включати в себе:
звичайні символи, які виводяться на екран дисплея;
специфікації перетворення даних, кожна з яких викликає на екран значення наступного аргумента із списку,
керуючі символьні константи:
\а - викликає звуковий сигнал;
\n - перехід на новий рядок;
\b - повернення на позицію вліво;
\r - перехід на початок біжучого рядка;
\f - перехід на нову сторінку;
\t - горизонтальна табуляція;
\v - вертикальна табуляція;
\ddd - вісімковий код символу;
\’ - апостроф;
\xddd - шістнадцятковий код символу;
\" - подвійні лапки;
\0 - нульовий символ (пусто);
\\ - зворотня коса риска;
Специфікація перетворення має наступний формат:
%[вирівнювання][ширина][точність]символ перетворення
Квадратні дужки не є символами специфікації, а лише вказують, що дане поле може бути опущене. Специфікація перетворення починається знаком % і закінчується символом перетворення (форматом), між якими можуть бути:
знак "-" (мінус), який показує, що перетворений параметр повинен бути вирівняний вліво у своєму полі (по змовчуванню вирівнюється вправо);
рядок цифр - мінімальна ширина поля. Якщо значеня змінної перевищує ширину поля, то виводиться стільки символів, скільки потрібно;
крапка;
Рядок цифр - максимальне число символів, які необхідно вивести для типу char. Аргументами функції printf можуть бути змінні, константи, вирази, виклики функцій. Значення аргументів повинні відповідати заданій специфікації.
Вивід символів
Специфікація перетворення:
%[-][ширина]с
Вивід символів рядка здійснюється доти, поки не зустрінеться символ '\0', або до вказаної точності. Якщо довжина рядка більша від заданої точності, то залишок рядка відкидається.