#include <stdio.h>
#include <string.h>
main()
{
char str[20][10],t[20],str1[10];
int i,j,n=0;
while(1)
{
scanf("%s",str1); //每次输入的时候是把那串字符串先放在str1[0]的位置吗,下次输入再覆盖
if(str1[0]=='#')
{
break;
}
else
{
strcpy(str[n],str1); //strcpy的一般用法为strcpy(字符数组1,字符串2),字符数组1不是必须写成数组名的形式吗,这里的str[n]是什么意思,定义str的时候也是一个二维数组
n++;
}
}
for(i=0;i<n-1;i++)
for(j=0;j<n-i-1;j++)
{
if(strlen(str[j])>strlen(str[j+1])) //同样,str不是一个二维数组名吗,这里是一维
{
strcpy(t,str[j]);
strcpy(str[j],str[j+1]);
strcpy(str[j+1],t);
}
}
for(i=0;i<n;i++)
{
printf("%s ",str[i]);
}
}
二维数组不是也可以看成一维数组的数组吗,char str[20][10]相当于20个长度为10的一维字符数组,在c里一般用字符数组接收字符串,所以str[20][10]也相当于20个字符串,每个字符串最大长度为10