我是C语言的新手,正在学习变速操作。
如果数据是二进制数,我理解移位操作,但是对于这种情况下的代码,我想实现以下情况:“ t”,“ h”,“ i”,“ s”,“ '\ 0'全部丢弃或移位,并将'a'移至该字符串的第一个元素。
我可以通过使用移位运算符来做到这一点吗?如果是这样,为什么会这样呢?
非常感谢。
char words[10] = {'t', 'h', 'i', 's', ' ', '\0', 'a', 'b', 'c'};
答案 0 :(得分:1)
您正在谈论的移位运算符基本上是bitwise operator。您不能使用它来移动字符数组。
要完成您的要求,您可以编写一个函数。假设您要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;
}
这是一个非常琐碎的想法,可以肯定的是,可以通过许多方式改进此方法。但是我认为您已经掌握了基本思路。