搜索
查看: 2308|回复: 2
打印 上一主题 下一主题

到底哪里错了?

[复制链接]
跳转到指定楼层
楼主
发表于 2013-4-4 23:15:03 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
5啊哈币
本帖最后由 一辈子的鱼 于 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
请按任意键继续. . .


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表