【发布时间】:2014-10-28 18:35:02
【问题描述】:
我有两个函数 rmdup 和 rmvow,当我单独运行这些函数时,它们运行良好,但是当它们一起在一个程序中时,它们就完全不工作了?
int rmdup ( char name[] )
{
char nodup[20] = {''\0''};
int l = strlen(name);
int i = 0, j, k = 0;
while ( i < l )
{
j = i + 1;
if ( name[i] == name[j] )
{
nodup[k] = name[i];
i+2;
while(nodup[k] == name[i])
{
i++;
}
k++;
}
else
{
i++;
}
nodup[k] = ''\0'';
}
strcpy(name, nodup);
}
上面的工作是孤立的,下面的也是。
int rmvow ( char name[] )
{
char novow[20] = {''\0''};
int l = strlen(name);
int i = 0, j = 0;
while ( i < l )
{
if ( name[i] == ''a'' ||
name[i] == ''e'' ||
name[i] == ''i'' ||
name[i] == ''o'' ||
name[i] == ''u'' )
{
i++;
}
else
{
novow[j] = name[i];
i++;
j++;
}
novow[j] = ''\0'';
}
strcpy(name, novow);
}
【问题讨论】:
-
请学会正确缩进你的代码。它使阅读和遵循执行流程变得更加容易。你还没有展示你是如何尝试“在一个程序中一起使用它们”的,那么我们应该如何解释它们为什么不起作用呢?
-
不清楚您所说的“当他们在一起时”甚至是“他们根本不工作”是什么意思。提供一起使用它们的代码,说明每个应该的时间,以及实际结果。您的代码布局充其量是非常规的,并且很难阅读 - 如果您希望其他人阅读您的代码并提供帮助,您应该使其尽可能简单。
-
这是什么语言,为什么标记为
strcpy?这有关系吗?什么是''\0''、''a''等?它们不会编译为 C 代码,否则看起来就是这样。 -
i+2应该是i += 2。 -
该代码是“危险的”,因为它对于任何字符串长度都无法正常工作。就地修改字符串比使用固定长度的临时数组
novow和nodup更安全。
标签: strcpy