在主函数中输入10个等长的字符串。用另一函数对它们排序。然后在主函数输出这10个已排序好的字符串(使用指向数组的指针完成)。
**谭浩强C语言程序设计第五版指针习题11、12题 **
#include<stdio.h>
#include<string.h>
int main()
{
void sort(char (*from)[20]);
int i=0;
char str[10][20];
char (*k)[20]=str;
/*
字符数组代表一个字符串,因此二维数组中的每个元素都是一个字符串
所以使用指针输出时,和输出整型数组不一样,直接用指向一维数组的指针输出就行
*/
for(;i<10;i++,k++)
{
scanf("%s",k);
}
k=str;
printf("\n");
sort(str);
printf("\n");
//printf("%d",strcmp("zebra","where"));
printf("\n");
for (i = 0; i < 10; i++,k++){
printf("%s\n", k);
}
return 0;
}
void sort(char (*from)[20])
{
char *temp;
int i=0,j;
for(;i<10;i++)
{
for(j=i+1;j<10;j++)
if(strcmp(from[i],from[j])<0)
{
strcpy(temp,from[i]);
strcpy(from[i],from[j]);
strcpy(from[j],temp);
}
}
}
不能用赋值语句将一个字符串常量或字符数组直接给一个字符数组。字符数组名是一个地址常量,它不能改变值,因此需要用到strcpy()函数来交换比较后的字符串。
结果示例: