Учебная версия на русском. Код и его вывод сохранены в исходном виде.
Строки в C
Учитывайте нулевой терминатор, вместимость буфера и функции string.h.

Строка C заканчивается нулевым байтом. Буфер должен вмещать и текст, и терминатор. strlen считает символы до нуля, но сама по себе не знает вместимость объекта.
fgets получает вместимость и может сохранить перевод строки. При копировании и соединении строк проверяйте свободное место и наличие терминатора. Не изменяйте строковые литералы и не читайте неограниченный ввод в фиксированный буфер.
Сравнивайте содержимое через strcmp, а не адреса через ==. Проверьте пустую и длинную строку, а также пробелы внутри. Побайтовая обработка не обязательно соответствует подсчёту символов Unicode.
Код C
#include <stdio.h>
#include <string.h>
int main(void) {
printf("=== C Strings: Declaration & Manipulation ===\n\n");
// 1. Mutable stack array
char greeting[32] = "Hello";
char name[] = "Programmer";
printf("Initial greeting: %s (Length: %zu)\n", greeting, strlen(greeting));
printf("Name: %s (Length: %zu)\n", name, strlen(name));
// 2. Safe string concatenation with snprintf
char full_message[64];
snprintf(full_message, sizeof(full_message), "%s, %s! Welcome to C.", greeting, name);
printf("Concatenated: %s\n", full_message);
// 3. In-place string mutation
greeting[0] = 'J'; // "Jello"
printf("Modified greeting: %s\n", greeting);
// 4. String comparison
char word1[] = "apple";
char word2[] = "banana";
int cmp = strcmp(word1, word2);
if (cmp < 0) {
printf("\"%s\" comes before \"%s\" alphabetically (cmp = %d)\n", word1, word2, cmp);
}
// 5. String reversal in-place
char text[] = "Online C Compiler";
size_t len = strlen(text);
for (size_t i = 0; i < len / 2; i++) {
char temp = text[i];
text[i] = text[len - 1 - i];
text[len - 1 - i] = temp;
}
printf("Reversed string: %s\n", text);
return 0;
}Открыть в компилятореОжидаемый вывод
=== C Strings: Declaration & Manipulation === Initial greeting: Hello (Length: 5) Name: Programmer (Length: 10) Concatenated: Hello, Programmer! Welcome to C. Modified greeting: Jello "apple" comes before "banana" alphabetically (cmp = -1) Reversed string: reliPmoC C enilnO
Частые вопросы
Почему код и вывод остаются на английском?
Ключевые слова, идентификаторы и строки, проверяемые тестами, сохранены, чтобы не менять программу. Объяснения и элементы управления переведены.