Оператор сдвига, о котором вы говорите, в основном побитовый оператор .Вы не можете использовать это для перемещения массива символов.
Чтобы выполнить то, что вы просили, вы можете написать функцию.Предположим, вы хотите left shift
-
int leftShift(char *words, int len)
{
int i;
for(i = 1; i < len; i++)
{
words[i - 1] = words[i];
}
len--;
return len;
}
Что делает эта функция?- он принимает массив и длину этого массива в качестве параметра и выполняет сдвиг влево один раз.
Итак, из вашей основной функции вы можете просто вызывать этот метод любое количество раз, которое вам нужно -
int main(void) {
char words[10] = {'t', 'h', 'i', 's', ' ', '\0', 'a', 'b', 'c'};
int len = 10;
len = leftShift(words, len); // left shift one time - this will discard 't'
len = leftShift(words, len); // left shift one time - this will discard 'h'
//finally print upto len, because len variable holds the new length after discarding two characters.
int i;
for(i = 0; i < len; i++)
{
printf("'%c', ", words[i]);
}
return 0;
}
Это очень тривиальная идея, конечно, этот подход можно улучшить многими способами.Но я думаю, у вас есть основная идея.