回 帖 发 新 帖 刷新版面

主题:谁能解释一下这个栈,为什么这么输入也可以这么输出?

#include "stdio.h"
#include "stdlib.h"
#include "conio.h"
#define N 20
main()
{
     char *p ;
     char *s[N]; 
     int i,top=0;
    for(i=0;i<5;i++)
     { 
       p=(char *)malloc(2*sizeof(char)); 
       gets(p);
       s[top++]=p;
        
       }
     

   while(top>0)
    
     {  
          p=s[--top];  
         puts(p);
          p=NULL;   
     }
     
}
就是在我输入时候了。恩,1 2 3 4 (一直输没按enter)  2 3 4 5 (enter),然后结束,但是,为什么,输出的时候还是、按照1 2 3 4   2 3 4 5?
难道这个栈可以用来存储这个空格的?还是可以用来存储这个整个的结构
、请各位高手针对这个问题,子细分析一下???

回复列表 (共1个回复)

沙发

没封装……乍一看还真认不出来是栈……
你既然是用gets输入的,那么一次就会读入整个字符串。如果想要过滤空格,用scanf(" %s")的形式就好了
不过我不是很理解,你的数据域既然只有char[2]干吗不干脆写成char呢……存储能力是一样的

我来回复

您尚未登录,请登录后再回复。点此登录或注册