user-0 提问: 关于符号平衡栈的问题。为什么我的两个if语句都执行不了？

回复:
user: user-0
content: 引用 10 楼 huchenguang 的回复:[quote=引用 9 楼 u013429409 的回复:] [quote=引用 7 楼 huchenguang 的回复:]  if(strcmp("string[i]","}")==0||strcmp("string[i]",")")==0||strcmp("string[i]","]")==0) 你这是要比较什么？？？ 比较字符串"string[i]"和"}"？这是永远不等的 感觉你是要判断形参string是否是括号字符')',']','}‘，这样比较： if(string == ')' || string == ']' || string == '}') 建议你多看看字符，字符串的基础知识if(string == ')' || string == ']' || string == '}')，不是if(string[i] == ')' || string[i] == ']' || string [i]== '}')吗。还有我改了一下：  [/quote] 首先，你的push函数里定义的string变量是char类型，而不是char[]，所以在push函数里使用string[i]是错误的，按你的思路string应该这样定义:char string[] a = string[i]；而不是a = 'string[i]'; "sting[i]"表示一个字符串，字符串的每个元素分别是：s，t，r，i，n，g，[，i，] 单个字符用'' 'string[i]‘是错误的用法[/quote]噢噢  知道了，多谢指导！

user: user-1
content: 调试就知道了啊,   不需要等待别人解答.

user: user-2
content: 引用 9 楼 u013429409 的回复:[quote=引用 7 楼 huchenguang 的回复:]  if(strcmp("string[i]","}")==0||strcmp("string[i]",")")==0||strcmp("string[i]","]")==0) 你这是要比较什么？？？ 比较字符串"string[i]"和"}"？这是永远不等的 感觉你是要判断形参string是否是括号字符')',']','}‘，这样比较： if(string == ')' || string == ']' || string == '}') 建议你多看看字符，字符串的基础知识if(string == ')' || string == ']' || string == '}')，不是if(string[i] == ')' || string[i] == ']' || string [i]== '}')吗。还有我改了一下：  [/quote] 首先，你的push函数里定义的string变量是char类型，而不是char[]，所以在push函数里使用string[i]是错误的，按你的思路string应该这样定义:char string[] a = string[i]；而不是a = 'string[i]'; "sting[i]"表示一个字符串，字符串的每个元素分别是：s，t，r，i，n，g，[，i，] 单个字符用'' 'string[i]‘是错误的用法

user: user-3
content: 引用 1 楼 starytx 的回复:因为你的if里边的条件都不满足啊，strcmp都不会返回0（里边的字符串不相等）星哥看收件箱

user: user-4
content: 因为你的if里边的条件都不满足啊，strcmp都不会返回0（里边的字符串不相等）

user: user-0
content: 引用 7 楼 huchenguang 的回复:if(strcmp("string[i]","}")==0||strcmp("string[i]",")")==0||strcmp("string[i]","]")==0) 你这是要比较什么？？？ 比较字符串"string[i]"和"}"？这是永远不等的 感觉你是要判断形参string是否是括号字符')',']','}‘，这样比较： if(string == ')' || string == ']' || string == '}') 建议你多看看字符，字符串的基础知识if(string == ')' || string == ']' || string == '}')，不是if(string[i] == ')' || string[i] == ']' || string [i]== '}')吗。还有我改了一下：  #include<stdio.h> #include<malloc.h> #include<string.h> #define MAXSIZE 10 typedef char elemtype; typedef struct stacknode{     elemtype data;     struct stacknode *next; }StackNode; //建栈 StackNode *InitStack(StackNode *top){     top=(StackNode *)malloc(sizeof(StackNode));     top->next=NULL;     return top; } int CreatStack(StackNode *top){     if(top->next==NULL)         {             printf("建栈成功.\n");             return 1;         }     else     {         printf("建栈失败！\n");         return 0;     } } //进栈 StackNode *Push(StackNode *top,char string){////////////// /////////这个语句if也是不行，是相同的原因，能帮我看看吗，谢谢了。     StackNode *p,*q;     int i;     char item,a;     for(i=0;i<MAXSIZE;i++)     {         a='string[i]';         if((a=='{')||(a=='(')||(a=='['))             {                 item=a;                 p=(StackNode *)malloc(sizeof(StackNode));                 p->next=NULL;                 p->data=item;                 p->next=top;                 top=p;             }         if((a=='}')||(a==')')||(a==']'))             {                 if(a==top->data)                 {                     q=(StackNode *)malloc(sizeof(StackNode));                     q->next=NULL;                     q=top->data;                     top=top->next;                     free(q);                 }                 else                     return top;             }     }     return top; };  int main(){   StackNode *top;   int i,k;   char string[MAXSIZE];   top=InitStack(top);   CreatStack(top);   printf("请输入带{ ( [的%d个字符的字符串:",MAXSIZE);   for(i=0;i<MAXSIZE;i++)     scanf("%c",&string[i]);   getchar();   top=Push(top,string);   if(top->next==NULL)     {         for(i=0;i<MAXSIZE;i++)            printf("%c",string[i]);         printf("符号平衡.\n");     }   else     {         for(i=0;i<MAXSIZE;i++)            printf("%c",string[i]);         printf("符号不平衡.\n");     } return 0; }

user: user-2
content: strcpy("item","string[i]");这是要干嘛？把一个字符串常量，赋值给另一个字符串常量？？？…………

user: user-2
content: if(strcmp("string[i]","}")==0||strcmp("string[i]",")")==0||strcmp("string[i]","]")==0) 你这是要比较什么？？？ 比较字符串"string[i]"和"}"？这是永远不等的 感觉你是要判断形参string是否是括号字符')',']','}‘，这样比较： if(string == ')' || string == ']' || string == '}') 建议你多看看字符，字符串的基础知识

user: user-0
content: 引用 5 楼 zhao4zhong1 的回复:代码功能归根结底不是别人帮自己看或讲解或注释出来的；而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。 提醒：再牛×的老师也无法代替学生自己领悟和上厕所！ 单步调试和设断点调试是程序员必须掌握的技能之一。首先，我尊重你的看法，你说的也对。但是我又不得不说。如果不问，自己又解决不了，那将永远无法知道答案。问了并且解决了，自己懂了，那就变成自己的了。只有这样才能进步啊！

user: user-5
content: 代码功能归根结底不是别人帮自己看或讲解或注释出来的；而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。 提醒：再牛×的老师也无法代替学生自己领悟和上厕所！ 单步调试和设断点调试是程序员必须掌握的技能之一。

user: user-6
content: strcmp("string[i]","}") 这里比较的是字符串"string[i]"和字符串"}"，显然不会返回 0 .