Строки в C: как объявить и инициализировать строковые переменные в C
Что такое строка в C?
A Строка в C это не что иное, как набор символов в линейной последовательности. «C» всегда рассматривает строку как отдельные данные, даже если она содержит пробелы. Одиночный символ определяется с использованием одинарной кавычки. Строка представляется с использованием двойных кавычек.
Example, "Welcome to the world of programming!"
«C» предоставляет стандартную библиотеку который содержит множество функций, которые можно использовать для легкого выполнения сложных операций со строками в C.
Как объявить строку в C?
AC String — это простой массив с типом данных char. язык «С» не поддерживает напрямую строку как тип данных. Следовательно, чтобы отобразить строку в C, вам необходимо использовать массив символов.
Общий синтаксис объявления переменной как строки в C следующий:
char string_variable_name [array_size];
Классическое объявление строк можно выполнить следующим образом:
char string_name[string_length] = "string";
Размер массива должен быть определен при объявлении строковой переменной C, поскольку он используется для расчета количества символов, которые будут храниться внутри строковой переменной в C. Ниже приведены некоторые допустимые примеры объявления строк:
char first_name[15]; //declaration of a string variable char last_name[15];
В приведенном выше примере представлены строковые переменные с размером массива 15. Это означает, что данный строковый массив C способен содержать не более 15 символов. Индексация массива начинается с 0, поэтому в нем будут храниться символы с позиции 0–14. Компилятор C автоматически добавляет NULL-символ '\0' в созданный массив символов.
Как инициализировать строку в C?
Давайте изучим инициализацию строк в 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 declaration char 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: программа C для чтения строки
При написании интерактивных программ, которые запрашивают ввод данных у пользователя, C предоставляет функции scanf(),gets() и fgets() для поиска строки текста, введенной пользователем.
Когда мы используем scanf() для чтения, мы используем спецификатор формата «%s» без использования «&» для доступа к адресу переменной, поскольку имя массива действует как указатель.
Например:
#include <stdio.h> int 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 Tutorials», тогда функция scanf никогда не будет читать всю строку, поскольку между двумя именами встречается пробельный символ. Функция scanf будет читать только Guru99.
Чтобы прочитать строку, содержащую пробелы, мы используем функцию get(). Gets игнорирует пробелы. Это останавливает
чтение при достижении новой строки (нажата клавиша Enter).
Например:
#include <stdio.h> int 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 Ritchie My full name is Dennis Ritchie
Другой более безопасной альтернативой get() является функция fgets(), которая считывает указанное количество символов.
Например:
#include <stdio.h> int 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: Carlos My name is Carlos
Аргументы fgets():
- имя строки,
- количество символов для чтения,
- stdin означает чтение со стандартного ввода, которым является клавиатура.
Вывод строки C: программа C для печати строки
Стандартная функция printf используется для печати или отображения строк на языке C на устройстве вывода. Используемый спецификатор формата: %s.
Пример,
printf("%s", name);
Вывод строк осуществляется с помощью функций fputs() и printf().
функция fputs()
Для функции fputs() требуется имя строки и указатель на то место, где вы хотите отобразить текст. Мы используем стандартный вывод, который относится к стандартному выводу для вывода на экран.
Например:
#include <stdio.h> int main() {char town[40]; printf("Enter your town: "); gets(town); fputs(town, stdout); return 0;}
Вывод:
Enter your town: New York New York
помещает функцию
Функция puts используется для печати строки на языке C на устройстве вывода и перемещения курсора обратно в первую позицию. Функцию puts можно использовать следующим образом:
#include <stdio.h> int main() { char name[15]; gets(name); //reads a string puts(name); //displays a string return 0;}
Синтаксис этой функции сравнительно прост, чем у других функций.
Библиотека струн
Стандартная библиотека C предоставляет различные функции для управления строками в программе. Эти функции также называются обработчиками строк. Все эти обработчики присутствуют внутри заголовочный файл.
Функция | Цель |
---|---|
strlen () | Эта функция используется для определения длины строки. Он возвращает количество символов в строке, исключая символ NULL. |
стркат(строка1, строка2) | Эта функция используется для объединения двух строк в одну. Он добавляет или объединяет строку str2 в конец строки str1 и возвращает указатель на строку str1. |
стркмп(строка1, строка2) | Эта функция используется для сравнения двух строк друг с другом. Он возвращает 0, если строка1 равна строке2, меньше 0, если строка1 < строка2, и больше 0, если строка1 > строка2. |
Давайте рассмотрим программу ниже, которая демонстрирует функции библиотеки строк:
#include <stdio.h> #include <string.h> int main () { //string initialization char string1[15]="Hello"; char string2[15]=" World!"; char string3[15]; int val; //string comparison val= strcmp(string1,string2); if(val==0){ printf("Strings are equal\n"); } else{ printf("Strings are not equal\n"); } //string concatenation printf("Concatenated string:%s",strcat(string1,string2)); //string1 contains hello world! //string length printf("\nLength of first string:%d",strlen(string1)); printf("\nLength of second string:%d",strlen(string2)); //string copy printf("\nCopied string is:%s\n",strcpy(string3,string1)); //string1 is copied into string3 return 0; }
Вывод:
Strings are not equal Concatenated string:Hello World! Length of first string:12 Length of second string:7 Copied string is:Hello World!
Другие важные функции библиотеки:
- strncmp(str1, str2, n) : возвращает 0, если первые n символов строки str1 равны первым n символам строки str2, меньше 0, если str1 < str2, и больше 0, если str1 > str2.
- strncpy(str1, str2, n) Эта функция используется для копирования строки из другой строки. Копирует первые n символов строки str2 в строку str1.
- strchr(str1, c): возвращает указатель на первое появление символа c в строке str1 или NULL, если символ не найден.
- strrchr(str1, c): он ищет строку 1 в обратном порядке и возвращает указатель на позицию символа c в строке 1 или 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():
#include <stdio.h> int 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: 221348 you enter 221348
- Объявление указателя строки, такое как char *string = «language», является константой и не может быть изменено.
Резюме
- Строка — это последовательность символов, хранящаяся в массиве символов.
- Строка — это текст, заключенный в двойные кавычки.
- Такой символ, как «d», не является строкой и обозначается одинарными кавычками.
- «C» предоставляет стандартные библиотечные функции для управления строками в программе. Струнные манипуляторы хранятся в заголовочный файл.
- Строка должна быть объявлена или инициализирована перед использованием в программе.
- Существуют различные строковые функции ввода и вывода, каждая из которых имеет свои особенности.
- Не забудьте подключить библиотеку строк для работы с ее функциями.
- Мы можем преобразовать строку в число с помощью функций atoi(), atof() и atol(), которые очень полезны для процессов кодирования и декодирования.
- Мы можем манипулировать различными строками, определив массив строк в C.