Ваш код явно синтаксически неверен, но, я думаю, вы об этом знаете.
Ваша переменная t
действительно представляет собой массив символов, и у вас есть указатель, указывающий на первый символ этого массива символов, например, у вас есть указатель, указывающий на первый символ нулевой строки. Что вы можете сделать, так это изменить значение указателя, чтобы указать на новую начальную точку вашей строки.
Вы можете либо это сделать, либо если вы действительно используете массив, вы можете скопировать указатель новой отправной точки, которую хотите использовать. Таким образом, если данные, которые вы хотите скопировать находится в памяти, на которую указывает:
const char* str = "Stackoverflow is an online website";
Это выглядит следующим образом в памяти:
Stackoverflow is an online website\0
str points to: --^
Если вы хотите, чтобы указать на другой отправной точки вы можете изменить указатель на точку на другой стартовой позиции:
Stackoverflow is an online website\0
str + 14 points to: --------------^
Вы можете передать адрес из «я», чтобы ваш strcpy
, например, так:
Очевидно, что вы не знаете, какой размер обрезать без анализа (14), то, что вы можете сделать, это поиск строки для первого символа, следующего за пробелом.
// Notice that this is just a sample of a search that could be made
// much more elegant, but I will leave that to you.
const char* FindSecondWord(const char* strToSearch) {
// Loop until the end of the string is reached or the first
// white space character
while (*strToSearch && !isspace(*strToSearch)) strToSearch++;
// Loop until the end of the string is reached or the first
// non white space character is found (our new starting point)
while (*strToSearch && isspace(*strToSearch)) strToSearch++;
return strToSearch;
}
strcpy(t, FindSecondWord("Stackoverflow is an online website"));
cout << t << endl;
Этот выход будет: представляет собой интернет-сайт
Поскольку это, скорее всего, назначение школы, я пропущу лекцию о более современных C++ обработки строки, как я ожидал что-то делать с указателями обучения. Но, очевидно, это очень низкая модификация строки.
ли я понимаю, что вы в порядке? Вам нужно отрезать часть c-строки и сохранить ее в той же переменной? Есть ли какая-либо причина против strstr в этом случае? Вы всегда можете реализовать его самостоятельно, но это похоже на переосмысление велосипеда –