回 帖 发 新 帖 刷新版面

主题:[讨论]关于顺序串的一个讨论

要求把字符串中的单词按顺序输出.我下面的这个程序不知道为什么不能正确运行,请大家看看问题处在那里,谢谢.

   #define MAXNUM 100
#include<stdio.h>
#include<string.h>//要用到字符串比较函数


typedef struct Seqstring//顺序串的结构
 {
     char str[MAXNUM];//顺序串最大字符数
     int len;//顺序串实际长度
}    Seqstring;

void  HandleSeqstring (Seqstring s) {
    char t[20][20];
    char str[20];
    int i,j,m,n,p,q,k=0;
    
    //接下来要把单词取出来
  for(m=0,n=0;n<s.len;m++,n++)
   {
          if(s.str[n]!=' ')
         
                     t[k][m]=s.str[n++];
                 
          else
               {
                   k++;
                   m=0;
               }    
   }

   //接下来将要对取出的单词进行排序


for(i=0;i<k-1;i++)
{
   for(j=i;j<=k-1;j++) 
   {
    

    if(strcmp(t[i],t[j])>0)
      {    
           strcpy(str,t[i]);
          strcpy(t[i],t[j]);
          strcpy(t[j],str);
      }

   }
    
                
 }
 
 

  
  
  //接下来就要输出单词
              
      printf("\n\n\n\n\nNow Output the Words:\n\n\n");
      
      for(i=0;i<k;i++)
      puts(t[i]);
         

}

void main() 
{
    
     int x;
     
     Seqstring st;
     printf("\nInput\n");
     gets(st.str);
     printf("output\n");
     puts(st.str);
     
     for(x=0;st.str[x]!='\0';x++)
        st.len=x;
        
     
     HandleSeqstring(st);
     
}

回复列表 (共1个回复)

沙发


for(i=0;i<k;i++)
      puts(t[i]);
之前执行这一句:
printf("k=%d\n",k);
发现k的值为0.
还有这二句:
for(x=0;st.str[x]!='\0';x++)
        st.len=x;
当长度为1时st.len的值却为0,所以应该在后面再加一个
st.len++;

我来回复

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