本帖最后由 一辈子的鱼 于 2013-4-4 23:18 编辑
编写一个程序,从键盘输入任意条谚语,并将它们存储到执行期间分配的内存里,然后按字长顺序有短到长输出。
搞了一晚,输出倒是按大小排列的,可是和输入的字符串不一样,百思不得其解,请高手指点迷津。
#include <stdio.h>
#include <stdlib.h>
#define SIZE 100
int main(void)
{
char *p[SIZE] = {NULL};
int i = 0;
int j = 1;
int k = 0;
int count = 0;
p[SIZE] = (char *)malloc(SIZE*sizeof(char));
printf("lease enter some proverbs:\n"); 这里的笑脸是字母p。其他的表情都是左括号(。
for(i = 0,count = 0;i<100;i++,count++)
{
printf("%d>>p+%d) = ",i+1,i);
gets(p+i);
//printf("%d\n",strlen(p+i));(这句没啥用。)
if(strlen(p+i)==0)
break;
}
//printf("%d\n",count);(这句也没用。)
i = 1;
for(j = 1;j<SIZE;++j)
{
while(k<=count)
{
if(strlen(p+k)==j)
{
printf("%d>>: %s\n",i,p+k);
++k;
++i;
break;
}
else
++k;
}
k = 0;
}
free(p);
system("pause");
return 0;
}
输出如下:
Please enter some proverbs:
1>>p+0) = sghdfrytuyihj
2>>p+1) = uyrhfgvb
3>>p+2) = ryt
4>>p+3) = f
5>>p+4) = uytre
6>>p+5) = et
7>>p+6) = dyui
8>>p+7) =
上面是从键盘输入的,下面是运行结果,怎么不一样啊?
1>>: f
2>>: et
3>>: ryt
4>>: dyui
5>>: uytret
6>>: uyrhryt
7>>: sghduyrhryt
请按任意键继续. . .
|