【发布时间】:2013-11-05 18:04:03
【问题描述】:
所以我一直在尝试解决以下问题,但无济于事:
编写一个名为 removeString 的函数以从字符串中删除指定数量的字符。该函数应采用三个参数:源字符串、源字符串中的起始索引号以及要删除的字符数。因此,如果数组文本中包含字符串“错误的儿子”,则调用
removeString(文本, 4, 6);
具有从数组文本中删除字符“wrong”(单词“wrong”加上后面的空格)的效果。文本中的结果字符串是“儿子”。
我已经尝试查找其他解决方案,但它们都使用 memcpy 函数,我想避免使用它,因为它还没有在我的书中介绍,我不想“欺骗系统”可以这么说。
我的 removeString 函数如下:
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[] 中。
【问题讨论】:
-
你的函数不会改变
text(s1) 因为output是removeString的本地函数。相关(虽然不一定重复):stackoverflow.com/questions/19696338/…