#include<stdio.h>
#include<string.h>
void SaveSameString(char **name,int num)
{
int i,j,k=0,flag;
char* temp;
char *Output[num+1];
for(i=0;i<num;i++)
{
flag=0;
temp=name[i];
for(j=i+1;j<num;j++)
{
if(strcmp(temp,name[j])==0)
{
flag=1;
name[j]="";
}
}
if(flag==1&&name[i]!="")
Output[k++]=name[i];
}
}
int main()
{
char *name[5]={"ss","aa","bb","aa","ss"};
SaveSameString(name,5);
}
面试的时候参加一个笔试,其中一道编程题就是这道题目,题目强调只能用C语言去写,不能用c++,更不能用STL;平常都是c++编的,都忘了c语言中的字符串的数组,当时还用了string!回来c编写一边才发现这样的写是错误的!!!
C语言中定义字符数组的方式有2中:
char name[][5]={"ss","aa","bb","aa","ss"};改方式在调用函数void SaveSameString(char **,int num)时报错,
char *name[5]={"ss","aa","bb","aa","ss"};这种方式可以不再数组定义的时候指定字符串的长度,但是注意字符串的个数是一定要指定的,像这样写 char **name 是不行的。这样定义的好处就是可以定义一个二维指针char **pointer = name;