大家好,我是一童,今天分享的是输入字符串,利用指针数组排序
注意1:指针字符串数组的输入
a[0]=gets(buf[0])必须初始化,否则数组第0位是空(对这个花了好长时间,才把原因找到)
注意2:p=*(a+i++)
a+i指向指针数组的指针 即指针的指针,下一次,我会专门写这方面的东西,指针的指针,
很烧脑呀emmm;
#include <stdio.h>//输入字符串,利用指针数组排序
#include <string.h>
#define N 1000
#define M 1000
void Sort(char *a[],int n);//选择排序
void Print(char *a[],int n);//字符串数组输出
void main()
{
int i,n;
char *a[N];
char buf[N][M];
printf("请输入您要比较字符串的个数: n = ");
scanf("%d",&n);
printf("\n");
while(n<=0||n>N)
{
puts("您输入的n错误!请重新输入!(0<n<1000)");
printf("\n请输入您要比较字符串的个数: n = ");
scanf("%d",&n);
}
puts("\n请输入字符串内容:");
a[0]=gets(buf[0]);//初始化(特重要)
for(i=0;i<n;i++)
{
gets(buf[i]);
a[i]=buf[i];
}
puts("\n您要比较的字符串为:");
for(i=0;i<n;i++)
puts(a[i]);
Sort(a,n);
Print(a,n);
}
void Sort(char *a[],int n)
{
int i,j;
char *p;
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
if(strcmp(a[i],a[j])>0)
{
p=a[i];
a[i]=a[j];
a[j]=p;
}
}
}
void Print(char *a[],int n)
{
int i=0;
char *p=a[0];//初始化
puts("\n排序后为:");
while(i<n)
{
p=*(a+i++);//*(a+i)即a[i]的地址(a+i指向指针数组的指针)
printf("N0.%d %s\n",i,p);
}
}
截图
今天刚把系统装好,把常用的软件安装好,所以先分享这些,有写错或者需改进的地方,欢迎下方留言!!