Char і String
У висновку нашого останнього уроку ми натякнули на ідею використання масивів для обробки тексту.
У C немає специфічного типу даних, призначеного виключно для рядків (або тексту). Натомість ми використовуємо масив типу char, де кожен елемент масиву містить один символ. Отже, текст "c<>definity"
буде представлений як:
char array[12] = {'c','<','>','d','e','f','i','n','i','t','y','\0'};
Ви могли помітити, що текст "c<>definity"
містить лише 11 символів, але масив має 12 елементів.
Примітка
Подумайте про це: кожне слово, яке ви знаєте, це просто комбінація літер.
Символ \0
Цей символ, \0
, сигналізує про кінець рядка у C. Не плутайте його з цифрою нуль; це унікальний, непечатний символ, подібний до \n
. У таблиці ASCII цей символ має код 0.
Додаткова комірка масиву зарезервована для цього символу.
Коли ви працюєте з текстом, переконайтеся, що масив, який містить текст, має розмір на один елемент більше, ніж фактична довжина тексту.
Примітка
Пам'ятайте, навіть пробіл є символом і вимагає свого місця в масиві. Наприклад:
char array[10] = { 'u','s','e',' ','s','p','a','c','e','\0' }
.
Char vs. String
Важливо розуміти, що 'x'
і "x"
не є тим самим.
Рядок складається з символів. Завжди пам'ятайте завершувати рядок символом \0
.
'x'
- це просто символьна константа типу char;"x"
- це рядок, масив значень char, або, в цьому випадку, {'x', '\0'}.
Примітка
Переконайтеся, що ви не плутаєте
'\0'
,'0'
і"0"
. Перший - це символьний літерал, що представляє символ з ASCII кодом 0 (NULL
). Другий - це символьний літерал для цифри 0, з ASCII кодом 48. Третій - це рядок, що складається з двох символів: цифри 0 і термінатора рядка,\0
.
Вивід рядків
У C, коли ви хочете відобразити рядки (масиви значень char), ви використовуєте специфікатор %s
. Цей специфікатор вказує функції printf()
, який тип інформації вона повинна очікувати. Використовуючи %s
, ми повідомляємо функції printf()
, що вона отримає рядок.
main.c
12345678910#include <stdio.h> int main() { char array[] = { 'c','<','>','d','e','f','i','n','i','t','y','\0' }; printf("%s\n", array); // use %s format specifiers return 0; }
Мова C включає стандартну бібліотеку для маніпуляцій з рядками, <string.h>
.
У цій бібліотеці є функція, яка рахує кількість символів у рядку:
main.c
123456789101112#include <stdio.h> #include <string.h> int main() { char array[] = { 'c','<','>','d','e','f','i','n','i','t','y','\0' }; printf("%d\n", strlen(array)); return 0; }
Давайте зануримося в ілюстративний приклад:
main.c
12345678910#include <stdio.h> int main() { char str[] = "c<>definity"; printf("%c\n", str[0] ); return 0; }
Цікаво, що, використовуючи індекс, ми отримуємо доступ до першого елемента масиву. По суті, в основі рядки є просто масивами типу char.
Завдяки властивостям масивів, ви можете змінювати конкретні елементи рядка за допомогою індексів:
Main.c
123456789101112#include <stdio.h> int main() { char str[] = "c<>definity"; str[5] = '#'; // change the sixth character `f` to `#` printf("%s\n", str); return 0; }
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
Запитайте мені питання про цей предмет
Сумаризуйте цей розділ
Покажіть реальні приклади
Awesome!
Completion rate improved to 2.63
Char і String
Свайпніть щоб показати меню
У висновку нашого останнього уроку ми натякнули на ідею використання масивів для обробки тексту.
У C немає специфічного типу даних, призначеного виключно для рядків (або тексту). Натомість ми використовуємо масив типу char, де кожен елемент масиву містить один символ. Отже, текст "c<>definity"
буде представлений як:
char array[12] = {'c','<','>','d','e','f','i','n','i','t','y','\0'};
Ви могли помітити, що текст "c<>definity"
містить лише 11 символів, але масив має 12 елементів.
Примітка
Подумайте про це: кожне слово, яке ви знаєте, це просто комбінація літер.
Символ \0
Цей символ, \0
, сигналізує про кінець рядка у C. Не плутайте його з цифрою нуль; це унікальний, непечатний символ, подібний до \n
. У таблиці ASCII цей символ має код 0.
Додаткова комірка масиву зарезервована для цього символу.
Коли ви працюєте з текстом, переконайтеся, що масив, який містить текст, має розмір на один елемент більше, ніж фактична довжина тексту.
Примітка
Пам'ятайте, навіть пробіл є символом і вимагає свого місця в масиві. Наприклад:
char array[10] = { 'u','s','e',' ','s','p','a','c','e','\0' }
.
Char vs. String
Важливо розуміти, що 'x'
і "x"
не є тим самим.
Рядок складається з символів. Завжди пам'ятайте завершувати рядок символом \0
.
'x'
- це просто символьна константа типу char;"x"
- це рядок, масив значень char, або, в цьому випадку, {'x', '\0'}.
Примітка
Переконайтеся, що ви не плутаєте
'\0'
,'0'
і"0"
. Перший - це символьний літерал, що представляє символ з ASCII кодом 0 (NULL
). Другий - це символьний літерал для цифри 0, з ASCII кодом 48. Третій - це рядок, що складається з двох символів: цифри 0 і термінатора рядка,\0
.
Вивід рядків
У C, коли ви хочете відобразити рядки (масиви значень char), ви використовуєте специфікатор %s
. Цей специфікатор вказує функції printf()
, який тип інформації вона повинна очікувати. Використовуючи %s
, ми повідомляємо функції printf()
, що вона отримає рядок.
main.c
12345678910#include <stdio.h> int main() { char array[] = { 'c','<','>','d','e','f','i','n','i','t','y','\0' }; printf("%s\n", array); // use %s format specifiers return 0; }
Мова C включає стандартну бібліотеку для маніпуляцій з рядками, <string.h>
.
У цій бібліотеці є функція, яка рахує кількість символів у рядку:
main.c
123456789101112#include <stdio.h> #include <string.h> int main() { char array[] = { 'c','<','>','d','e','f','i','n','i','t','y','\0' }; printf("%d\n", strlen(array)); return 0; }
Давайте зануримося в ілюстративний приклад:
main.c
12345678910#include <stdio.h> int main() { char str[] = "c<>definity"; printf("%c\n", str[0] ); return 0; }
Цікаво, що, використовуючи індекс, ми отримуємо доступ до першого елемента масиву. По суті, в основі рядки є просто масивами типу char.
Завдяки властивостям масивів, ви можете змінювати конкретні елементи рядка за допомогою індексів:
Main.c
123456789101112#include <stdio.h> int main() { char str[] = "c<>definity"; str[5] = '#'; // change the sixth character `f` to `#` printf("%s\n", str); return 0; }
Дякуємо за ваш відгук!