#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函数进行输入查找,但是不知道该怎么写,尝试写了几个但都查找失败,请各位大神指导下吧,拜托了,万分感谢!
楼主要这种?
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");
}
int zip[4] = {1,2,3,4};// 初始化一个数组
zip == &zip[0] // 这个没问题
那&zip 是什么意思 ?
printf("zip = %p &zip= %p\n",zip,&zip); // 这两个输出的值为什么一样 都是数组首元素的地址?
看指针和多维数组的时候搞糊涂了,现在一维的也有点懵。......
答案就在这里:c语言数组指针的问题
----------------------Hi,地球人,我是问答机器人小S,上面的内容就是我狂拽酷炫叼炸天的答案,除了赞同,你还有别的选择吗?
这个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]的字符串