arrays - C Array:如何移动字符串中的每个字符?
问题描述
我是C新手,正在学习轮班操作。
如果数据是二进制数,我理解移位操作,但是对于我的代码在这种情况下,我想实现't','h','i','s','','\ 0的情况' 全部被丢弃或移位,并将 'a' 移动到该字符串的第一个元素。
我可以通过使用 shift 运算符来执行此操作吗?如果是这样,为什么会这样?
非常感谢。
char words[10] = {'t', 'h', 'i', 's', ' ', '\0', 'a', 'b', 'c'};
解决方案
您正在谈论的移位运算符基本上是按位运算符。您不能使用它来移动字符数组。
要完成您的要求,您可以编写一个函数。假设你想要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;
}
这是一个非常微不足道的想法,当然这种方法可以在很多方面进行改进。但我认为你有基本的想法。
推荐阅读
- python - 在hadoop中保存到本地目录时使用-getmerge函数是否可以避免多个标题?
- kubernetes - 如何为worker pod定义k8s liveness probe和readness probe
- sql - SQL中的分组别名
- python - 从同一脚本激活虚拟环境后运行一些函数包含该函数
- octobercms - OctoberCMS - 图形记录作为跟踪模型中的数据
- verilog - Verilog - 如何从测试台模块中的输出寄存器插入值?
- flutter - 如何在颤振中调用状态类中的方法?
- javascript - 如何在 ionic 3 中禁用 iframe 的滚动
- java - 覆盖并附加到现有文件中
- laravel - 循环遍历 laravel 中的集合并从集合中获取特定数据