| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 470 人关注过本帖
标题:使用指针给函数传递数据,排序字符串出错
只看楼主 加入收藏
瓦尔德的田野
Rank: 2
等 级:论坛游民
帖 子:18
专家分:22
注 册:2012-9-29
结帖率:100%
收藏
已结贴  问题点数:50 回复次数:4 
使用指针给函数传递数据,排序字符串出错
程序代码:
//这是一个排序字符串的代码
#include<stdio.h>
#include<string.h>
#include<stdlib.h>

bool str_in(char **); //读入字符串 返回bool类型值
void str_sort(const char *[],int); //排序字符串 无返回值
void swap(void **p1,void **p2);  //交换指针地址 冒泡排序 无返回值
void str_out(char *[],int);  //输出排序后字符串 无返回值

const size_t BUFFER_LEN=256;
const size_t NUM_P=50;

int main(void)
{
    char *ps[NUM_P];
    int count=0;
    printf("输入字符串:");
    for(count=0;count<NUM_P;count++)
        if(!str_in(&ps[count]))
            break;
    str_sort(ps,count); //问题1.“str_sort”: 不能将参数 1 从“char *[50]”转换为“const char *[]”转换丢失限定符
    str_out(ps,count);
    return 0;
}
bool str_in(char **pstring)
{
    char buffer[BUFFER_LEN];
    if(gets(buffer)==NULL)
    {
        printf("\nError reading string.\n");
        exit(1);
    }
    if(buffer[0]=='\0')
        return false;
    *pstring=(char*)malloc(strlen(buffer)+1);
    if(*pstring==NULL)
    {
        printf("\n分配失败!");
        exit(1);
    }
    strcpy(*pstring,buffer);
    return true;
}
void str_sort(const char *p[],int n)
{
    char *ptemp=NULL;
    bool sorted=false;
    while(!sorted)
    {
        sorted=true;
        for(int i=0;i<n-1;i++)
            if(strcmp(p[i],p[i+1])>0)
            {
                sorted=false;
                swap(&p[i],&p[i+1]); //问题2.“swap”: 不能将参数 1 从“const char **”转换为“void **“与指向的类型无关;
                                      // 转换要求 reinterpret_cast、C 样式转换或函数样式转换
            }
    }
}
void swap(void **p1,void **p2)
{
    void *pt=*p1;
    *p1=*p2;
    *p2=pt;
}
void str_out(char *p[],int n)
{
    printf("字符串由小到大排序为:\n\n");
    for(int i=0;i<n;i++)
    {
        printf("%s\n",p[i]);
        free(p[i]);
        p[i]=NULL;
    }
    return;
}

这是霍顿的C语言入门经典书上的一个列子 关于指针函数传递的代码 因为我刚开始学习这章 所以真心不知道该怎么去改正 求高手指点

[ 本帖最后由 瓦尔德的田野 于 2012-12-23 22:13 编辑 ]
搜索更多相关主题的帖子: include 字符串 color 
2012-12-23 22:08
hit小龙
Rank: 6Rank: 6
等 级:侠之大者
帖 子:173
专家分:462
注 册:2012-12-6
收藏
得分:0 
先抢沙发
坐等大神
2012-12-23 22:18
wmy妘
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2012-12-23
收藏
得分:0 
你确定c中可以用bool这个类型
指针长度可以先令它为空
。。。。。这些都是老师上课时说的    我也不清楚  你实践一下吧
2012-12-23 22:33
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:50 
void str_sort(char *[],int); //把const去掉
void swap(char **p1,char **p2);//把void换成char


[fly]存在即是合理[/fly]
2012-12-23 22:34
瓦尔德的田野
Rank: 2
等 级:论坛游民
帖 子:18
专家分:22
注 册:2012-9-29
收藏
得分:0 
回复 4楼 azzbcc
犀利

你不努力就永远不知道自己能做到多好!
2012-12-23 22:44
快速回复:使用指针给函数传递数据,排序字符串出错
数据加载中...
 
   



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

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