【发布时间】:2017-06-14 20:59:48
【问题描述】:
我有一个 char 指针数组(字符串数组),其中包含一些重复值。我发现了一种算法,它通过删除重复值来截断数组。
这是一个代码示例:
int i, j , k;
int n = 10;
char *teams[n];
for(i=0;i<n;i++){
for(j=i+1;j<n;){
if(*(team[j]==*(team[i])){
for(k=j;k<n;k++){
//strcpy(team[k], team[k+1]);
team[k] = team[k+1];
}
n--;
}else{
j++;
}
}
}
我读过在字符串数组之间复制字符串的唯一方法是使用 strcpy(s1, s2)。但在我的情况下,我不能使用它,因为 strcpy 函数仅当 s2 的长度等于或大于 s1 的长度时才允许将 s2 复制到 s1 中。那么如果不能将指针 team[k+1] 指向的字符串放到 team[k] 中怎么实现这个算法呢?
【问题讨论】:
-
if(*(team[j]==*(team[i])){你在这里比较单个字符。另外:team[k] = team[k+1];k+1 可以 >= n 这里 -
@wildplasser 谢谢!我
-
if(*(team[j]==*(team[i])){- 这里有 3 个左括号,但有 2 个右括号。你确定它真的是代码吗?它不会编译 -
注意:您的
for k循环必须转到n-1,因为您复制了k+1。如果是 malloc,请不要忘记先free(team[j])。 -
@PaulOgilvie 它可以编译,我在示例中留下了一个小括号,但它是我的代码的伪造版本。目前我没有使用 mallocs,但会使用,感谢您的建议。