| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 474 人关注过本帖
标题:请大家帮帮我!!!一个程序引发的问题!!
取消只看楼主 加入收藏
lizjohn
Rank: 1
等 级:新手上路
帖 子:54
专家分:0
注 册:2010-10-28
结帖率:70.59%
收藏
已结贴  问题点数:10 回复次数:3 
请大家帮帮我!!!一个程序引发的问题!!
#include<stdio.h>
#include<stdlib.h>
#define SIZE 100
struct brack
{
    char*base;
    char*top;
    int stacksize;
};
void init(struct brack*m);
void push(struct brack*m,char c);
int pop(struct brack*m,char*e);
void main()
{
    char ch,t;
    int flag;
    struct brack sq;
     init(&sq);
    while((ch=getchar())!='\n')
    {
        if(ch=='('||ch=='['||ch=='{')
            push(&sq,ch);
        else if(ch==')'||ch==']'||ch=='}')
        {
            flag=pop(&sq,&t);
            if(flag==0)
                break;
            else if((ch==')')&&(t=='('))
                flag=1;
            else if((ch==']')&&(t=='['))
                flag=1;
            else if((ch=='}')&&(t=='{'))
                flag=1;
            else {
                flag=0;
                break;
            }
        }
    }
   
    if(flag==1)
        printf("match!!!\n");
    else
        printf("not match!!!\n");
}
void init(struct brack*m)
{
    m->base=m->top=(struct brack*)malloc(SIZE*sizeof(struct brack));      就是这一行: : cannot convert from 'struct brack *' to 'char *'
    if(!m->base)
    {printf("cant creat!\n");
    exit(0);
    }
    m->top=m->base;
    m->stacksize=SIZE;
}

void push(struct brack*m,char c)
{
    if((m->top-m->base)==m->stacksize)
        printf("stack full\n");
    else
        *m->top++=c;
}
int pop(struct brack*m,char*e)
{
    int FLAG;
    if(m->top==m->base)
        FLAG=0;
    else{
        *e=*--m->top;
        FLAG=1;
    }
    return FLAG;
}


1.为什么这个程序在TC能运行,到了VC++就显示 : cannot convert from 'struct brack *' to 'char *',这是为什么???
2.我最初都使用的"m.top,m.base",后来改成了“m->top,m->base''才能用,我不太清楚他们的区别
3.void init(struct brack*m);
void push(struct brack*m,char c);
int pop(struct brack*m,char*e);
这些*号,能换成&吗,我不太清楚他们的区别


请高手救我!!!

搜索更多相关主题的帖子: pop include 
2010-10-31 22:29
lizjohn
Rank: 1
等 级:新手上路
帖 子:54
专家分:0
注 册:2010-10-28
收藏
得分:0 
回复 2楼 vandychan
请赐教
2010-10-31 22:47
lizjohn
Rank: 1
等 级:新手上路
帖 子:54
专家分:0
注 册:2010-10-28
收藏
得分:0 
回复 5楼 七有新人
我要做的是顺序栈,不至于看不出来吧!
我在
图片附件: 游客没有浏览图片的权限,请 登录注册
,里面就能过呀,就是在VC++6.0里面过不了!
我也发现了你说的问题,但改成m=(struct brack*)malloc(SIZE*sizeof(struct brack));   就会出现
图片附件: 游客没有浏览图片的权限,请 登录注册
2010-11-01 18:14
lizjohn
Rank: 1
等 级:新手上路
帖 子:54
专家分:0
注 册:2010-10-28
收藏
得分:0 
回复 6楼 lizjohn
顺便能解决我这两个问题吗:2.我最初都使用的"m.top,m.base",后来改成了“m->top,m->base''才能用,我不太清楚他们的区别
3.void init(struct brack*m);
void push(struct brack*m,char c);
int pop(struct brack*m,char*e);
这些*号,能换成&吗,我不太清楚他们的区别


2010-11-01 18:17
快速回复:请大家帮帮我!!!一个程序引发的问题!!
数据加载中...
 
   



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

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