所以我一直在试图解决以下问题,但没有成功:
编写一个名为remove string的函数以从字符串中删除指定数量的字符。函数应该有三个参数:源字符串、源字符串中的起始索引号和要删除的字符数。因此,如果数组文本包含字符串“错误的子”,则调用
重新投资(文本,4,6);
具有从数组文本中删除字符“错误”(单词“错误”加上后面的空格)的效果。文本中的结果字符串就是“子”。
我试过寻找其他的解决方案,但是所有的解决方案都使用了memcpy
函数,我想避免它,因为它还没有在我的书中介绍过,可以说我不想“欺骗系统”。
我的改造功能如下:
void removeString (char text[], int x, int y)
{
char output[81];
int i, z = 0;
for ( i = 0; (i <= 81); i++) {
if (z < (x-1) || z > (x+y-1) ) {
output[z] = text[z];
//printf("%i\n", z);
z++;
} else {
z++;
}
}
}
int main(void)
{
char s1[81] = "the wrong son";
int startPoint = 4, runLength = 6;
removeString(s1, startPoint, runLength);
printf("The new text is as follows:\n");
printf("%s\n", s1);
return 0;
}
当我打印出“z”的值时,我看到它跳过了数字,但出于某种原因,它看起来像是将所有的
text[]
复制到output[]
中。 最佳答案
这将对原始字符串起作用
for (;text[x];x++)
{
text[x]=text[x+y];
}
关于c - 将字符数组的一部分复制到C中的另一个数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19795704/