Перевод на русский язык
Строки в C: Пособие для начинающих
Здравствуйте, будущие программисты! Сегодня мы отправимся в увлекательное путешествие в мир строк в языке C. Не волнуйтесь, если вы完全不 знакомы с программированием — я буду вашим дружелюбным проводником, и мы будем двигаться шаг за шагом. К концу этого руководства вы будете работать с строками в C, как профессионал!

Что такое строки в C?
Давайте начнем с азов. В C строка — это essentiallysequence из символов. Представьте себе бусы, где каждая бусина — это символ. Эти символы хранятся в смежных ячейках памяти, заканчиваясь специальным символом, называемым нулевым символом ('\0').
Интересный факт: в C нет отдельного типа данных для строк. Вместо этого мы используем массив символов для представления строки. Это как использование ряда почтовых ящиков для хранения серии писем!
Создание строки в C
Теперь давайте脏our руки и создадим свою первую строку в C. Есть несколько способов сделать это, но мы начнем с самого простого метода:
char greeting[6] = {'H', 'e', 'l', 'l', 'o', '\0'};
В этом примере мы создали строку под названием greeting, которая содержит слово "Hello". Давайте разберем это:
-
char— это тип данных для символов. -
greeting— это имя нашей строки. -
[6]указывает размер нашего массива. Нам нужно 6 мест: 5 для "Hello" и 1 для нулевого символа. - Символы заключены в одинарные кавычки и разделены запятыми.
- Не забудьте нулевой символ
'\0'в конце!
Инициализация строки без указания размера
C очень умный и может сам определить размер строки. Посмотрите на это:
char greeting[] = "Hello";
Не schlecht? C автоматически добавляет нулевой символ и calculatesразмер. Это как магия, но это просто C, который эффективен!
Цикл по строке
Теперь у нас есть строка, давайте научимся циклически обрабатывать её. Это полезно, когда вы хотите обработать каждый символ individually:
#include <stdio.h>
int main() {
char greeting[] = "Hello";
int i = 0;
while (greeting[i] != '\0') {
printf("%c", greeting[i]);
i++;
}
return 0;
}
Этот код выводит каждый символ "Hello" по одному. Цикл продолжается до тех пор, пока не встретится нулевой символ, который сигнализирует о конце строки.
Вывод строки (используя форматный спецификатор %s)
Циклическое прохождение строки символ за символом весело, но есть более легкий способ вывести строки:
#include <stdio.h>
int main() {
char greeting[] = "Hello, World!";
printf("%s", greeting);
return 0;
}
Форматный спецификатор %s говорит printf, что ожидается строка. Это как предупреждение printf: "Эй, к тебе идет строка!"
Создание строки с использованием двойных кавычек
Помните наш первый пример, где мы создавали строку символ за символом? Ну, есть shortcut:
char greeting[] = "Hello, World!";
Это делает то же самое, что и наш предыдущий пример, но гораздо короче. C заботится о добавлении нулевого символа за нас. Это как заказать уже собранные бусы вместо того, чтобы собирать их самостоятельно!
Ввод строки с использованием scanf()
Теперь давайте сделаем нашу программу интерактивной, получив ввод от пользователя:
#include <stdio.h>
int main() {
char name[50];
printf("Введите ваше имя: ");
scanf("%s", name);
printf("Здравствуйте, %s!\n", name);
return 0;
}
Здесь мы используем scanf() для чтения строки из ввода пользователя. Но будьте осторожны! scanf() останавливается на первом встречном пробеле. Так что если вы введете "John Doe", только "John" будет сохранен в name.
Ввод строки с пробелами
Для чтения строки с пробелами мы можем использовать следующий форматный спецификатор с scanf():
#include <stdio.h>
int main() {
char fullName[100];
printf("Введите ваше полное имя: ");
scanf("%[^\n]s", fullName);
printf("Здравствуйте, %s!\n", fullName);
return 0;
}
Форматный спецификатор %[^\n]s говорит scanf() читать до тех пор, пока не встретится символ новой строки. Это позволяет нам читать полные имена или предложения с пробелами.
Ввод строки с использованием функций gets() и fgets()
Хотя gets() прост в использовании, он считается небезопасным, так как не выполняет проверку границ. Вместо этого давайте используем более безопасную функцию fgets():
#include <stdio.h>
int main() {
char sentence[100];
printf("Введите предложение: ");
fgets(sentence, sizeof(sentence), stdin);
printf("Вы ввели: %s", sentence);
return 0;
}
fgets() безопаснее, так как позволяет указать максимальное количество символов для чтения, помогая предотвратить переполнение буфера.
Вывод строки с использованием функций puts() и fputs()
Наконец, рассмотрим альтернативные способы вывода строк:
#include <stdio.h>
int main() {
char greeting[] = "Hello, World!";
puts(greeting); // puts() автоматически добавляет новую строку
fputs(greeting, stdout); // fputs() не добавляет новую строку
return 0;
}
puts() прост и автоматически добавляет новую строку, в то время как fputs() дает вам больше контроля над выводом.
Вот таблица, резюмирующая функции строк, которые мы рассмотрели:
| Функция | Назначение | Пример |
|---|---|---|
| scanf() | Чтение форматированного ввода | scanf("%s", str); |
| gets() | Чтение строки (небезопасно, избегайте использования) | gets(str); |
| fgets() | Чтение строки безопасно | fgets(str, size, stdin); |
| printf() | Вывод форматированного вывода | printf("%s", str); |
| puts() | Вывод строки с новой строкой | puts(str); |
| fputs() | Вывод строки без новой строки | fputs(str, stdout); |
И вот вы уже сделали свои первые шаги в мир строк в C. Помните, что практика makes perfect, так что не бойтесь экспериментировать с этими концепциями. Счастливого программирования и пусть ваши строки всегда будут нуле-терminated!
Credits: Image by storyset
