2 qq 34524827 qq_34524827 于 2016.04.04 14:22 提问

C语言指针数组查找问题

#include
#include
void main()
{
void input(char name[],int n);
void sort(char *name[],int n);
void print(char *name[],int n);
void search(char *name[],int n);
char *name[4];
int n=4;
input(name,n);
sort(name,n);
print(name,n);
search(name,n);
}
void input(char *name[],int n)
{
int i;
printf("请输入4个字符串:\n");
for(i=0;i<n;i++)
{
name[i]=(char
)malloc(4*sizeof(char));
gets(name[i]);
}
}
void sort(char *name[],int n)
{
char *temp;
int i,j,k;
for(i=0;i {
k=i;
for(j=i+1;j if(strcmp(name[k],name[j])>0)
k=j;
if(k!=j)
{temp=name[i];name[i]=name[k];name[k]=temp;}
}
}
void print(char *name[],int n)
{
int i;
printf("字符串排序结果:\n");
for(i=0;i<n;i++)
printf("%s\n",name[i]);
}
void search(char *name[],int n)
{
char m;
scanf("%s",&m);

}

想补充一个search函数进行输入查找,但是不知道该怎么写,尝试写了几个但都查找失败,请各位大神指导下吧,拜托了,万分感谢!

3个回答

qq423399099
qq423399099   Ds   Rxr 2016.04.04 15:28
已采纳

楼主要这种?

 void search(char *name[],int n)
{
    char str[32] = {0};
    printf("请输入要查找的字符串:");
    scanf("%s", str);
    int i;
    for(i = 0; i < n; i++)
    {
        if(strcmp(name[i], str) == 0)
        {
            printf("找到字符串,序号为:%d\n", i + 1);
            return;
        }
    }
    printf("未找到字符串\n");
}
qq_34524827
qq_34524827 用strcmp进行比较两个字符串只要相等就是相同的,我怎么没想到这点,排序还用到strcmp了,我变通能力太渣,感谢!
一年多之前 回复
CSDNXIAOS
CSDNXIAOS   2016.04.04 14:32

int zip[4] = {1,2,3,4};//  初始化一个数组
zip == &zip[0]  // 这个没问题
那&zip 是什么意思 ?
printf("zip = %p      &zip= %p\n",zip,&zip);  //  这两个输出的值为什么一样 都是数组首元素的地址?
看指针和多维数组的时候搞糊涂了,现在一维的也有点懵。......
答案就在这里:c语言数组指针的问题
----------------------Hi,地球人,我是问答机器人小S,上面的内容就是我狂拽酷炫叼炸天的答案,除了赞同,你还有别的选择吗?

tusong86
tusong86   2016.04.04 15:36

这个void sort(char *name[],int n)想实现什么样的功能?
我理解应该是输入一个字符串,然后看与数组name中哪一个匹配,我理解函数原型应该是下面这样:
int sort(char *name[], int n, const char *pSearchStr);
返回结果为整形,表示name的第几个元素,若查找失败,则返回-1。

int sort(char *name[], int n, const char *pSearchStr)
{
int i = 0;
for(i = 0; i < n; ++i)
{
if(strstr(name[i], pSearchStr) != NULL)
{
return i;
}
}
return -1;
}

其中strstr(name[i], pSearchStr) != NULL表示pSearchStr是name[i]的字符串

tusong86
tusong86 回复qq_34524827: 不客气
一年多之前 回复
qq_34524827
qq_34524827 谢谢你,已经理解了
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!