Строки в C (с примерами)

В этом руководстве вы узнаете о строках в программировании на C. Вы научитесь объявлять их, инициализировать и использовать их для различных операций ввода-вывода с помощью примеров.

В программировании на C строка - это последовательность символов, заканчивающаяся нулевым символом . Например:

 char c() = "c string"; 

Когда компилятор встречает последовательность символов, заключенную в двойные кавычки, он по умолчанию добавляет в конец нулевой символ .

Как объявить строку?

Вот как можно объявить строки:

 char s(5); 

Здесь мы объявили строку из 5 символов.

Как инициализировать строки?

Вы можете инициализировать строки несколькими способами.

 char c() = "abcd"; char c(50) = "abcd"; char c() = ('a', 'b', 'c', 'd', ''); char c(5) = ('a', 'b', 'c', 'd', ''); 

Возьмем другой пример:

 char c(5) = "abcde";

Здесь мы пытаемся присвоить 6 символов (последний символ '') charмассиву из 5 символов. Это плохо, и вы никогда не должны этого делать.

Присвоение значений строкам

Массивы и строки - граждане второго сорта в C; они не поддерживают оператор присваивания после его объявления. Например,

 char c(100); c = "C programming"; // Error! array type is not assignable.

Примечание. Вместо этого используйте функцию strcpy (), чтобы скопировать строку.

Прочитать строку от пользователя

Вы можете использовать scanf()функцию для чтения строки.

scanf()Функция считывает последовательность символов до тех пор, пока не встретит пробел (пробел, символ новой строки, табуляция, и т.д.).

Пример 1: scanf () для чтения строки

 #include int main() ( char name(20); printf("Enter name: "); scanf("%s", name); printf("Your name is %s.", name); return 0; ) 

Вывод

 Введите имя: Деннис Ричи. Вас зовут Деннис.

Несмотря на то, что Деннис Ричи был введен в вышеуказанную программу, в строке имени сохранено только «Деннис». Это потому, что после Денниса было место.

Как прочитать строку текста?

Вы можете использовать эту fgets()функцию для чтения строки строки. И вы можете использовать puts()для отображения строки.

Пример 2: fgets () и put ()

 #include int main() ( char name(30); printf("Enter name: "); fgets(name, sizeof(name), stdin); // read string printf("Name: "); puts(name); // display string return 0; ) 

Вывод

 Имя: Том Хэнкс Имя: Том Хэнкс 

Здесь мы использовали fgets()функцию для чтения строки от пользователя.

fgets(name, sizeof(name), stdlin); // read string

В sizeof(name)результатах до 30. Следовательно, мы можем взять максимум 30 символов в качестве входных данных , который является размером строки имени.

Чтобы напечатать строку, мы использовали puts(name);.

Примечание . gets()Функция также может принимать данные от пользователя. Однако он удален из стандарта C.
Это потому, что gets()позволяет вводить любую длину символов. Следовательно, могло произойти переполнение буфера.

Передача строк в функции

Строки можно передавать в функцию так же, как и массивы. Узнайте больше о передаче массивов в функцию.

Пример 3: Передача строки в функцию

 #include void displayString(char str()); int main() ( char str(50); printf("Enter string: "); fgets(str, sizeof(str), stdin); displayString(str); // Passing string to a function. return 0; ) void displayString(char str()) ( printf("String Output: "); puts(str); ) 

Строки и указатели

Подобно массивам, имена строк «распадаются» на указатели. Следовательно, вы можете использовать указатели для управления элементами строки. Мы рекомендуем вам проверить массивы C и указатели, прежде чем проверять этот пример.

Пример 4: строки и указатели

 #include int main(void) ( char name() = "Harry Potter"; printf("%c", *name); // Output: H printf("%c", *(name+1)); // Output: a printf("%c", *(name+7)); // Output: o char *namePtr; namePtr = name; printf("%c", *namePtr); // Output: H printf("%c", *(namePtr+1)); // Output: a printf("%c", *(namePtr+7)); // Output: o )

Часто используемые строковые функции

  • strlen () - вычисляет длину строки
  • strcpy () - копирует строку в другую
  • strcmp () - сравнивает две строки
  • strcat () - объединяет две строки

Интересные статьи...