Що таке рядок у C?
Рядок в C не що інше, як набір символів в лінійній послідовності. 'C' завжди обробляє рядок окремими даними, навіть якщо він містить пробіли. Один символ визначається за допомогою подання в одній лапці. Рядок представлений із використанням подвійних лапок.
Example, "Welcome to the world of programming!"
'C' забезпечує стандартну бібліотеку
У цьому підручнику ви дізнаєтесь-
- Як оголосити та ініціалізувати рядок в C
- Введення рядка: Прочитайте рядок
- Вихід рядка: Друк / Відображення рядка
- функція fputs ()
- ставить функцію
- Бібліотека рядків
- Перетворення рядка в число
Як оголосити та ініціалізувати рядок в C
AC String - це простий масив із символом char як типом даних. Мова 'C' не підтримує безпосередньо рядок як тип даних. Отже, для відображення рядка на мові C вам потрібно використовувати масив символів.
Загальний синтаксис для оголошення змінної як рядка в C такий:
char string_variable_name [array_size];
Класичне оголошення рядків можна зробити наступним чином:
char string_name[string_length] = "string";
Розмір масиву повинен бути визначений під час оголошення змінної C String, оскільки він використовується для обчислення кількості символів, які будуть зберігатися всередині рядкової змінної в C. Деякі припустимі приклади оголошення рядка є такими,
char first_name[15]; //declaration of a string variablechar last_name[15];
Наведений вище приклад представляє рядкові змінні з розміром масиву 15. Це означає, що даний масив рядків C може містити не більше 15 символів. Індексація масиву починається з 0, отже, він буде зберігати символи з позиції 0-14. Компілятор C автоматично додає NULL символ '\ 0' до створеного масиву символів.
Давайте вивчимо ініціалізацію рядка на C. Наступний приклад демонструє ініціалізацію рядків на C,
char first_name[15] = "ANTHONY";char first_name[15] = {'A','N','T','H','O','N','Y','\0'}; // NULL character '\0' is required at end in this declarationchar string1 [6] = "hello";/* string size = 'h'+'e'+'l'+'l'+'o'+"NULL" = 6 */char string2 [ ] = "world"; /* string size = 'w'+'o'+'r'+'l'+'d'+"NULL" = 6 */char string3[6] = {'h', 'e', 'l', 'l', 'o', '\0'} ; /*Declaration as set of characters ,Size 6*/
У рядок3 символ NULL потрібно додавати явно, а символи укладаються в одинарні лапки.
'C' також дозволяє нам ініціалізувати рядкову змінну без визначення розміру символьного масиву. Це можна зробити наступним чином,
char first_name[ ] = "NATHAN";
Ім'я рядків на мові C виконує роль вказівника, оскільки в основному це масив.
Введення рядка: Прочитайте рядок
Під час написання інтерактивних програм, які просять у користувача введення, C забезпечує функції scanf (), gets () та fgets () для пошуку рядка тексту, введеного користувачем.
Коли ми використовуємо scanf () для читання, ми використовуємо специфікатор формату "% s", не використовуючи "&" для доступу до адреси змінної, оскільки ім'я масиву виконує роль вказівника. Наприклад:
#includeint main() {char name[10];int age;printf("Enter your first name and age: \n");scanf("%s %d", name, &age);printf("You entered: %s %d",name,age);}
Вихід:
Enter your first name and age:John_Smith 48
Проблема функції scanf полягає в тому, що вона ніколи не читає цілі рядки в C. Це зупинить процес читання, як тільки виникають пробіли, подача форми, вертикальна вкладка, новий рядок або повернення каретки. Припустимо, ми вводимо дані як "Підручники Guru99", тоді функція scanf ніколи не прочитає цілий рядок, оскільки між цими двома іменами виникає пробіл. Функція scanf читатиме лише Guru99.
Для того, щоб прочитати рядок, що містить пробіли, ми використовуємо функцію gets (). Отримує ігнорує пробіли. Він перестає читати, коли досягається новий рядок (натискається клавіша Enter). Наприклад:
#includeint main() {char full_name[25];printf("Enter your full name: ");gets(full_name);printf("My full name is %s ",full_name);return 0;}
Вихід:
Enter your full name: Dennis RitchieMy full name is Dennis Ritchie
Ще однією безпечнішою альтернативою функції get () є функція fgets (), яка зчитує вказану кількість символів. Наприклад:
#includeint main() {char name[10];printf("Enter your name plz: ");fgets(name, 10, stdin);printf("My name is %s ",name);return 0;}
Вихід:
Enter your name plz: CarlosMy name is Carlos
Аргументами fgets () є:
- ім'я рядка,
- кількість символів для читання,
- stdin означає читання зі стандартного вводу, яким є клавіатура.
Вихід рядка: Друк / Відображення рядка
Стандартна функція printf використовується для друку або відображення рядків в C на вихідному пристрої. Використовуваний специфікатор формату -% s
Приклад,
printf("%s", name);
Виведення рядка здійснюється за допомогою функцій fputs () та printf ().
функція fputs ()
Fputs () потребує імені рядка та вказівника на те, де ви хочете відобразити текст. Для друку на екран ми використовуємо stdout, який посилається на стандартний вихід, наприклад:
#includeint main(){char town[40];printf("Enter your town: ");gets(town);fputs(town, stdout);return 0;}
Вихід:
Enter your town: New YorkNew York
ставить функцію
Функція put використовується для друку рядка в C на вихідному пристрої та переміщення курсору назад у перше положення. Функцію put можна використовувати наступним чином,
#includeint main() {char name[15];gets(name); //reads a stringputs(name); //displays a stringreturn 0;}
Синтаксис цієї функції порівняно простий, ніж інші функції.
Бібліотека рядків
Стандартна бібліотека 'C' надає різні функції для управління рядками в програмі. Ці функції також називаються обробниками рядків. Всі ці обробники присутні у файлі заголовка
Функція | Призначення |
strlen () | Ця функція використовується для пошуку довжини рядка. Повертає кількість символів у рядку, за винятком символу NULL. |
strcat (str1, str2) | Ця функція використовується для поєднання двох рядків разом, щоб утворити єдиний рядок. Він додає або об'єднує str2 до кінця str1 і повертає покажчик на str1. |
strcmp (str1, str2) | Ця функція використовується для порівняння двох рядків між собою. Він повертає 0, якщо str1 дорівнює str2, менше 0, якщо str1 |
Давайте розглянемо програму нижче, яка демонструє функції бібліотеки рядків:
#include#include int main () {//string initializationchar string1[15]="Hello";char string2[15]=" World!";char string3[15];int val;//string comparisonval= strcmp(string1,string2);if(val==0){printf("Strings are equal\n");}else{printf("Strings are not equal\n");}//string concatenationprintf("Concatenated string:%s",strcat(string1,string2)); //string1 contains hello world!//string lengthprintf("\nLength of first string:%d",strlen(string1));printf("\nLength of second string:%d",strlen(string2));//string copyprintf("\nCopied string is:%s\n",strcpy(string3,string1)); //string1 is copied into string3return 0;}
Вихід:
Strings are not equalConcatenated string:Hello World!Length of first string:12Length of second string:7Copied string is:Hello World!
Іншими важливими функціями бібліотеки є:
- strncmp (str1, str2, n): повертає 0, якщо перші n символів str1 дорівнюють першим n символам str2, менше 0, якщо str1
str2. - strncpy (str1, str2, n) Ця функція використовується для копіювання рядка з іншого рядка. Копіює перші n символів str2 у str1
- strchr (str1, c): повертає покажчик на перше входження символу c в str1 або NULL, якщо символ не знайдено.
- strrchr (str1, c): він шукає str1 в зворотному порядку і повертає покажчик на позицію char c в str1, або NULL, якщо символ не знайдено.
- strstr (str1, str2): повертає покажчик на перше входження str2 у str1 або NULL, якщо str2 не знайдено.
- strncat (str1, str2, n) Додає (об'єднує) перші n символів str2 до кінця str1 і повертає покажчик на str1.
- strlwr (): для перетворення рядка в нижній регістр
- strupr (): для перетворення рядка у верхній регістр
- strrev (): зворотний рядок
Перетворення рядка в число
У програмуванні на C ми можемо перетворити рядок числових символів у числове значення, щоб запобігти помилці часу виконання. Бібліотека stdio.h містить такі функції для перетворення рядка в число:
- int atoi (str) Позначає ASCII як ціле число; він перетворює str на еквівалентне значення int. Повертається 0, якщо перший символ не є числом або числа не зустрічаються.
- double atof (str) Стоїть для плаваючого ASCII, він перетворює str в еквівалентне подвійне значення. Повертається 0.0, якщо перший символ не є числом або числа не зустрічаються.
- long int atol (str) Означає ASCII у long int, перетворює str у еквівалентне довге ціле значення. Повертається 0, якщо перший символ не є числом або числа не зустрічаються.
Наступна програма демонструє функцію atoi ():
#includeint main(){char *string_id[10];int ID;printf("Enter a number: ");gets(string_id);ID = atoi(string_id);printf("you enter %d ",ID);return 0;}
Вихід:
Enter a number: 221348you enter 221348
- Оголошення покажчика на рядок, таке як char * string = "language", є константою і не може бути змінено.
Резюме
- Рядок - це послідовність символів, що зберігається в масиві символів.
- Рядок - це текст, укладений у подвійні лапки.
- Такий символ, як 'd', не є рядком, і він позначається одинарними лапками.
- 'C' забезпечує стандартні функції бібліотеки для маніпулювання рядками в програмі. Маніпулятори рядків зберігаються у файлі заголовка
. - Рядок повинен бути оголошений або ініціалізований перед використанням у програмі.
- Існують різні функції вхідного та вихідного рядків, кожна з них має свої особливості.
- Не забудьте включити бібліотеку рядків для роботи з її функціями
- Ми можемо перетворити рядок у число через atoi (), atof () та atol (), які дуже корисні для процесів кодування та декодування.
- Ми можемо маніпулювати різними рядками, визначаючи масив рядків у C.