@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".