Рядки на Сі (з прикладами)

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

У програмуванні на С рядок - це послідовність символів, закінчена нульовим символом . Наприклад:

 char c() = "c string"; 

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

Як оголосити рядок?

Ось як можна оголосити рядки:

 char s(5); 

Тут ми оголосили рядок із 5 символів.

Як ініціалізувати рядки?

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

 char c() = "abcd"; char c(50) = "abcd"; char c() = ('a', 'b', 'c', 'd', ''); char c(5) = ('a', 'b', 'c', 'd', ''); 

Візьмемо ще один приклад:

 char c(5) = "abcde";

Тут ми намагаємося призначити 6 символів (останній символ '') charмасиву, що має 5 символів. Це погано, і ви ніколи не повинні цього робити.

Присвоєння значень рядкам

Масиви та рядки - це громадяни другого сорту на мові C; вони не підтримують оператор присвоєння після його оголошення. Наприклад,

 char c(100); c = "C programming"; // Error! array type is not assignable.

Примітка: Використовуйте функцію strcpy (), щоб замість цього скопіювати рядок.

Прочитайте рядок від користувача

Ви можете використовувати scanf()функцію для читання рядка.

scanf()Функція зчитує послідовність символів до тих пір, поки не зустріне пробіл (пробіл, символ нового рядка, табуляція, і т.д.).

Приклад 1: scanf () для читання рядка

 #include int main() ( char name(20); printf("Enter name: "); scanf("%s", name); printf("Your name is %s.", name); return 0; ) 

Вихідні дані

 Введіть ім'я: Денніс Річі Ваше ім'я Денніс.

Незважаючи на те, що Денніс Річі був введений до вищезазначеної програми, у рядку імен зберігався лише "Денніс". Це тому, що після Денніса був простір.

Як прочитати рядок тексту?

Ви можете використовувати fgets()функцію для читання рядка рядка. І, ви можете використовувати puts()для відображення рядка.

Приклад 2: fgets () і put ()

 #include int main() ( char name(30); printf("Enter name: "); fgets(name, sizeof(name), stdin); // read string printf("Name: "); puts(name); // display string return 0; ) 

Вихідні дані

 Введіть ім'я: Том Хенкс Ім'я: Том Хенкс 

Тут ми використовували fgets()функцію для читання рядка від користувача.

fgets(name, sizeof(name), stdlin); // read string

У sizeof(name)результатах до 30. Отже, ми можемо взяти максимум 30 символів в якості вхідних даних , який є розміром рядка імені.

Для друку рядка ми використали puts(name);.

Примітка:gets() функція також може бути приймати введення від користувача. Однак він вилучений зі стандарту C.
Це тому, що gets()дозволяє вводити будь-яку довжину символів. Отже, може бути переповнення буфера.

Передача рядків функціям

Рядки можуть передаватися функції так само, як масиви. Дізнайтеся більше про передачу масивів функції.

Приклад 3: Передача рядка функції

 #include void displayString(char str()); int main() ( char str(50); printf("Enter string: "); fgets(str, sizeof(str), stdin); displayString(str); // Passing string to a function. return 0; ) void displayString(char str()) ( printf("String Output: "); puts(str); ) 

Струни та покажчики

Подібно до масивів, назви рядків "занепадають" до покажчиків. Отже, ви можете використовувати покажчики для маніпулювання елементами рядка. Ми рекомендували перевірити масиви та покажчики C, перш ніж перевіряти цей приклад.

Приклад 4: Рядки та покажчики

 #include int main(void) ( char name() = "Harry Potter"; printf("%c", *name); // Output: H printf("%c", *(name+1)); // Output: a printf("%c", *(name+7)); // Output: o char *namePtr; namePtr = name; printf("%c", *namePtr); // Output: H printf("%c", *(namePtr+1)); // Output: a printf("%c", *(namePtr+7)); // Output: o )

Часто використовувані рядкові функції

  • strlen () - обчислює довжину рядка
  • strcpy () - копіює рядок в інший
  • strcmp () - порівнює два рядки
  • strcat () - об'єднує два рядки

Цікаві статті...