name[]={"tianjin","taiyuan","beijing","shanghai","tianjin","beijing"}; n=sizeof(name)/sizeof(char*);//计算字符串的个数 printf("Before deleting:\n"); for(k=0;k<n;k++) puts(name[k]); n=del_name(*name,n);//调用删除函数 printf("After deleting:\n"); for(k=0;k<n;k++) puts(name[k]); return 0; }怎么修改呀?
时间: 2024-03-03 20:52:41 浏览: 37
太原理工大学(Taiyuan University of T.zip
根据你提供的代码,我们可以看出来,你正在尝试删除字符串数组中的重复元素。但是代码中缺少删除函数的实现,所以你需要添加该函数的实现。下面是一个可能的代码实现:
```c
int del_name(char **name, int n){
int i, j, k;
for(i=0;i<n;i++){
for(j=i+1;j<n;){
if(strcmp(name[i],name[j])==0){
for(k=j;k<n-1;k++)
name[k]=name[k+1];
n--;
}
else
j++;
}
}
return n;
}
```
该函数使用了嵌套的循环来遍历所有字符串,如果发现两个字符串相同,则删除后面的那个字符串。如果你想测试该代码,可以将其放入你的程序中,并且修改 `main` 函数如下:
```c
int main(){
char *name[]={"tianjin","taiyuan","beijing","shanghai","tianjin","beijing"};
int n=sizeof(name)/sizeof(char*);
printf("Before deleting:\n");
for(int k=0;k<n;k++)
puts(name[k]);
n=del_name(name,n);
printf("After deleting:\n");
for(int k=0;k<n;k++)
puts(name[k]);
return 0;
}
```
如果一切正常,你应该能够看到输出的字符串数组中没有重复元素。
阅读全文