'cdef'和'cdfe'
比如指针:
string[0] 指向 cdef的地址
string[1] 指向 cdfe的地址
string[0] 和string[1],我理解的是,比较指向该数组的首地址的首元素,那c 后面的字母,怎么比较大小的? 这里没有我弄清楚。
比如,b和a 排序是:ab (1个字符排序,这里排序我理解)
ba 和ab 排序,是ab ,ba (不看程序我知道是这么排序,但是看了排序代码,就不知代码怎么排序的,不是只比较首字母吗?)
下面的是代码
/*
读入字符串,并排序字符
*/
#include<stdio.h>
#include<string.h>
#define SIZE 81 //限制字符串长度,包括\0
#define LIM 10 //可读入的最多行数
#define HALL " " //空字符停止输入
void stsrt(char *string[],int num); //字符串排序函数
char *s_gets(char *st,int n);
int main(void)
{
char input[LIM][SIZE]; //存储输入的数组
char *ptstr[LIM]; //内涵指针变量的数组
int ct = 0; //输入计数
int k; //输出计数
printf("Input up to %d lines,and i will sort them.\n",LIM);
printf("To stop,press the enter key at a line' start.\n");
while(ct<LIM && s_gets(input[ct],SIZE) !=NULL && input[ct][0] !='\0')
{
ptstr[ct]=input[ct]; //设置指针指向字符串
ct++;
}
stsrt(ptstr,ct); //字符串排序函数
puts("\nHere's the sorted list:\n");
for(k=0;k<ct;k++)
puts(ptstr[k]); //打印排序后的指针
return 0;
}
void stsrt(char *string[],int num) //字符串排序函数
{
char *temp;
int top,seek;
for(top=0;top<num-1;top++)
for(seek=top+1;seek<num;seek++)
if(strcmp(string[top],string[seek]) >0)
{
temp=string[top];
string[top]=string[seek];
string[seek]=temp;
}
}
char *s_gets(char *st,int n) //输入字符串函数
{
char *ret_val;
int i = 0;
ret_val= fgets(st,n,stdin);
if(ret_val)
{
while(st[i] !='\n' && st[i] !='\0')
i++;
if(st[i]=='\n')
st[i]='\0';
else
while(getchar() !='\n')
continue;
}
return ret_val;
}
下面是运行结果
