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; }
Дякуємо за ваш відгук!