Что такое строка в C?
Строка в C не что иное, как набор символов в линейной последовательности. 'C' всегда рассматривает строку как отдельные данные, даже если она содержит пробелы. Одиночный символ определяется с использованием одинарной кавычки. Строка представлена в двойных кавычках.
Example, "Welcome to the world of programming!"
'C' предоставляет стандартную библиотеку
В этом руководстве вы узнаете:
- Как объявить и инициализировать строку в C
- Ввод строки: чтение строки
- Вывод строки: печать / отображение строки
- функция fputs ()
- ставит функцию
- Строковая библиотека
- Преобразование строки в число
Как объявить и инициализировать строку в C
AC String - это простой массив с типом данных char. Язык C не поддерживает прямую строку как тип данных. Следовательно, чтобы отобразить строку в C, вам необходимо использовать массив символов.
Общий синтаксис объявления переменной как String в C следующий:
char string_variable_name [array_size];
Классическое объявление строк может быть выполнено следующим образом:
char string_name[string_length] = "string";
Размер массива должен быть определен при объявлении строковой переменной C, поскольку он используется для вычисления того, сколько символов будет храниться внутри строковой переменной в C. Ниже приведены некоторые допустимые примеры объявления строки.
char first_name[15]; //declaration of a string variablechar last_name[15];
В приведенном выше примере представлены строковые переменные с размером массива 15. Это означает, что данный строковый массив C может содержать не более 15 символов. Индексирование массива начинается с 0, поэтому в нем будут храниться символы с позиций 0-14. Компилятор C автоматически добавляет к созданному массиву символов символ NULL '\ 0'.
Давайте изучим инициализацию String в C. Следующий пример демонстрирует инициализацию Strings в 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";
Имя Strings в 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 (). 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): возвращает указатель на первое вхождение char 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 как float, преобразует str в эквивалентное значение типа double. 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.