| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 9004 人关注过本帖
标题:用指针数组输入三个字符串,,并排序
只看楼主 加入收藏
wxh525123
Rank: 2
等 级:论坛游民
帖 子:38
专家分:37
注 册:2010-4-18
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:9 
用指针数组输入三个字符串,,并排序
#include<stdio.h>
void main()
{
    char *name[3];
    int i,k,**p;
    for(i=0;i<3;i++)
        {
            printf("input the %d alphabetic string:\n",i+1);
            gets(name[i]);
            }
    for(i=0;i<3;i++)
        {
            k=i;
            if(strcmp(name[i],name[i+1])>0)
                k=i+1;
            if(k!=i)
                {
                    p=name[i];
                    name[i]=name[k];
                    name[k]=p;
                    }
            }
    for(i=0;i<3;i++)
        printf("%s\n",name[i]);
    getch();
    }
程序执行后有时候是这个结果:
图片附件: 游客没有浏览图片的权限,请 登录注册

有时候是这个结果:
图片附件: 游客没有浏览图片的权限,请 登录注册

请教高手帮忙看看怎么回事??谢谢了
搜索更多相关主题的帖子: 指针 字符 输入 
2010-04-23 17:43
wxh525123
Rank: 2
等 级:论坛游民
帖 子:38
专家分:37
注 册:2010-4-18
收藏
得分:0 
补充:如果gets(name[i]);换成scanf("%s",name[i]);就行了,可是输入的字符串不能有空格,请问怎样输入有空格的字符串啊?
2010-04-23 17:46
qq8801103
Rank: 5Rank: 5
来 自:苏州中科大软件学院
等 级:职业侠客
威 望:1
帖 子:422
专家分:340
注 册:2009-10-8
收藏
得分:8 
楼主说清楚点 排序具体怎么排

Discuz!  
好好学习  天天向上
2010-04-23 17:49
wxh525123
Rank: 2
等 级:论坛游民
帖 子:38
专家分:37
注 册:2010-4-18
收藏
得分:0 
按由小到大的顺序
2010-04-23 17:56
韩明海
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:253
专家分:749
注 册:2010-4-3
收藏
得分:0 
你的指针数组有问题,char *p[3];相当与你定义了三个指针,可是你没给分配空间,你需要在每次gets之前给p[i]一个mallloc空间
p[i]=(char *)malloc(50);p[i]指向一个五十个字符的空间,现在可以往里面装东西了,
你之前那么做是很危险的,因为你输入的数据没有明确的地址可能去覆盖其他的数据,
2010-04-23 18:02
明王朝
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:58
专家分:196
注 册:2009-11-3
收藏
得分:0 
回复 2楼 wxh525123
gets()函数用来从标准输入设备(键盘)读取字符串直到回车结束, 但回车符不属于这个字符串。其调用格式为:
     gets(s);
     其中s为字符串变量(字符串数组名或字符串指针)。
     gets(s)函数与scanf("%s", &s)相似, 但不完全相同, 使用scanf("%s", &s)函数输入字符串时存在一个问题, 就是如果输入了空格会认
为输入字符串结束,空格后的字符将作为下一个输入项处理, 但gets() 函数将接收输入的整个字符串直到回车为止。
2010-04-23 18:10
明王朝
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:58
专家分:196
注 册:2009-11-3
收藏
得分:12 
#include <stdio.h>
#include <string.h>
#include <stdlib.h>        //包含malloc的头文件

int main(void)
{
    char *name[3];
    int i, k;
    char *p;

    for (i = 0; i < 3; i++)
    {
        printf ("input the %d alphabetic string: \n", i+1);
        name[i] = (char *)malloc(sizeof(char));        //定义了指针后要使其指向一个有效的空间!!
        gets(name[i]);
//        scanf ("%s", name[i]);

    }

    for (i = 0; i < 2; i++)
    {
        k = i;
        if (strcmp(name[i], name[i+1]) > 0)
        {
            k = i + 1;
        }
        if (k != i)
        {
            p = name[i];
            name[i] = name[k];
            name[k] = p;
        }
    }

    for (i = 0; i < 3; i++)
    {
        printf ("%s\n", name[i]);
    }
    return 0;
}
注释的使用scanf函数,未注释的使用gets函数……

[ 本帖最后由 明王朝 于 2010-4-23 18:27 编辑 ]
2010-04-23 18:21
lancome
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2013-8-24
收藏
得分:0 
学习了,谢谢!
2013-08-24 16:53
cheenbee
Rank: 2
等 级:论坛游民
帖 子:53
专家分:32
注 册:2011-11-3
收藏
得分:0 
回复 7楼 明王朝
不准
2015-08-11 22:14
Aprilxu
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2016-6-18
收藏
得分:0 
棒棒哒,我也中午知道了指针数组怎么用啦!
2016-06-18 20:53
快速回复:用指针数组输入三个字符串,,并排序
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.044037 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved