Функції рядків в сі

Функції рядків в сі

У програмі рядки можуть визначатися таким чином:

  • як рядкові константи;
  • як масиви символів;
  • через покажчик на символьний тип;
  • як масиви рядків.

Крім того, має бути передбачено виділення пам'яті для зберігання рядка.

Будь-яка послідовність символів, укладена в подвійні лапки "". розглядається як строкова константа.

Під зберігання рядки виділяються послідовно йдуть осередки оперативної пам'яті. Таким чином, рядок являє собою масив символів. Для зберігання коду кожного символу рядка відводиться 1 байт.

Для приміщення в строкову константу деяких службових символів використовуються символьні комбінації. Так, якщо необхідно включити в рядок символ подвійної лапки, йому повинен передувати символ "зворотний слеш": ' "'.

При визначенні масиву символів необхідно повідомити компілятору необхідний розмір пам'яті.

В цьому випадку імена m2 і m3 є покажчиками на перші елементи масивів:

  • m2 еквівалентно m2 [0]
  • m2 [0] еквівалентно 'Г'
  • m2 [1] еквівалентно 'o'
  • m3 еквівалентно m3 [0]
  • m3 [2] еквівалентно 'x'

char m2 [80] = "Гірські вершини сплять у темряві ночі.";

Для завдання рядка можна використовувати покажчик на символьний тип.

m4 = m3;
* M4 еквівалентно m3 [0] = 'Т'
* (M4 + 1) еквівалентно m3 [1] = 'і'

Для покажчика можна використовувати операцію збільшення (переміщення на наступний символ):

Іноді в програмах виникає необхідність опис масиву символьних рядків. В цьому випадку можна використовувати індекс рядка для доступу до кількох різних рядках.

В цьому випадку poet є масивом, що складається з чотирьох покажчиків на символьні рядки. Кожен рядок символів є символьний масив, тому є чотири покажчика на масиви. Покажчик poet [0] посилається на першу рядків:

* Poet [0] еквівалентно 'П',
* Poet [l] еквівалентно '-',

Ініціалізація виконується за правилами, визначеними для масивів.
Тексти в лапках еквівалентні ініціалізації кожного рядка в масиві. Кома розділяє сусідні
послідовності.
Крім того, можна явно задавати розмір рядків символів, використовуючи
опис, подібне такому:

Різниця полягає в тому, що така форма задає «прямокутний»
масив, в якому всі рядки мають однакову довжину.

визначає вільний масив, де довжина кожного рядка визначається тим дороговказом, який цей рядок инициализирует. Вільний масив не витрачає пам'ять марно.

Більшість операцій мови Сі, що мають справу з рядками, працює з покажчиками. Для розміщення в оперативній пам'яті рядки символів необхідно:

  • виділити блок оперативної пам'яті під масив;
  • проинициализировать рядок.

Для виділення пам'яті під зберігання рядки можуть використовуватися функції динамічного виділення пам'яті. При цьому необхідно враховувати необхідний розмір рядка:

char * name;
name = (char *) malloc (10);
scanf ( "% 9s". name);

Для введення рядка використана функція scanf (). причому введений рядок не може перевищувати 9 символів. Останній символ буде містити '\ 0'.

Функції введення рядків

Для введення рядка може використовуватися функція scanf (). Однак функція scanf () призначена швидше для отримання слова, а не рядки. Якщо застосовувати формат "% s" для введення, рядок вводиться до (але не включаючи) наступного порожнього символу, яким може бути пробіл, табуляція або новий рядок.

Для введення рядка, включаючи пробіли, використовується функція

char * gets (char *);

Як аргумент функції передається покажчик на рядок, в яку здійснюється введення. Функція просить користувача ввести рядок, яку вона поміщає в масив, поки користувач не натисне Enter.

Функції виводу рядків

Для виведення рядків можна скористатися розглянутої раніше функцією

printf ( "% s". str); // str - покажчик на рядок

або в скороченому форматі

Для виведення рядків також може використовуватися функція

int puts (char * s);

яка друкує рядок s і переводить курсор на новий рядок (на відміну від printf ()). Функція puts () також може використовуватися для виведення строкових констант, укладених в лапки.

Функція введення символів

Для введення символів може використовуватися функція

яка повертає значення символу, введеного з клавіатури. Зазначена функція використовувалася в розглянутих раніше прикладах для затримки вікна консолі після виконання програми до натискання клавіші.

Функція виведення символів

Для виведення символів може використовуватися функція

char putchar (char);

яка повертає значення символу, що виводиться і виводить на екран символ, переданий в якості аргументу.

Приклад Порахувати кількість введених символів у введеному рядку.

#include
#include
#include
int main ()