我是C的新手,我正在学习轮班操作。
我理解移位操作,如果数据是二进制数,但对于我的代码,在这种情况下,我想实现't','h','i','s','','\ 0的情况'都被丢弃或移位,并将'a'移动到该字符串的第一个元素。
我可以使用shift运算符来执行此操作吗?如果是这样,为什么会这样呢?
非常感谢。
char words[10] = {'t', 'h', 'i', 's', ' ', '\0', 'a', 'b', 'c'};
您正在谈论的转换运算符基本上是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;
}
这个功能有什么作用? - 它将该数组的数组和长度作为参数,并执行一次左移。
那么从你的main函数中你可以随意调用这个方法 -
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;
}
这是一个非常简单的想法,当然这种方法可以通过多种方式得到改进。但我认为你有了基本的想法。