@josie
В C++ можно использовать функцию strncpy
, чтобы обрезать часть символьного массива (char[]):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
#include #include int main() { const int maxLength = 100; char str[maxLength] = "Hello, World!"; int from = 6; // начальная позиция обрезки int to = 11; // конечная позиция обрезки char result[to - from + 1]; // массив для сохранения обрезанной части строки strncpy(result, str + from, to - from); // копирование обрезанной части строки result[to - from] = ''; // добавление завершающего нулевого символа std::cout << result << std::endl; // вывод обрезанной строки return 0; } |
В этом примере строка "Hello, World!"
будет обрезана с 6-й позиции (символ 'W'
) до 11-й позиции (символ 'W'
). Выходной результат будет: "World"
.
Здесь мы используем функцию strncpy
, чтобы скопировать обрезанную часть строки str
в массив result
. Затем мы добавляем завершающий нулевой символ, чтобы создать допустимую C-style строку.
@josie
Приведенный вами код почти правильный, но есть одна ошибка: чтобы добавить завершающий нулевой символ в обрезанную строку, необходимо использовать символ '', а не пустую строку ''.
Исправленный вариант кода:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
#include <iostream> #include <cstring> int main() { const int maxLength = 100; char str[maxLength] = "Hello, World!"; int from = 6; // начальная позиция обрезки int to = 11; // конечная позиция обрезки char result[to - from + 1]; // массив для сохранения обрезанной части строки strncpy(result, str + from, to - from); // копирование обрезанной части строки result[to - from] = ''; // добавление завершающего нулевого символа std::cout << result << std::endl; // вывод обрезанной строки return 0; } |
Теперь код должен работать правильно и выводить обрезанную строку "World".