| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 539 人关注过本帖
标题:急急急!!求帮助啊!!
只看楼主 加入收藏
IT飞飞
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2012-9-8
结帖率:66.67%
收藏
已结贴  问题点数:20 回复次数:8 
急急急!!求帮助啊!!
#include "stdio.h"
#include "conio.h"
#include"string.h"
#define MAXSIZE 100

typedef  struct
{
    char str[MAXSIZE];
    int length;


}seqstring;
int i,result;

seqstring *s,*s1,*s2;
seqstring *creatstring(seqstring *s)
{
  int i=0;char ch;
  while((ch=getchar())!='\0')  


  {
     s->str[i]=ch;
     i++;
  
  }


   return s;


}

   
  int comparestr(seqstring *s1,seqstring *s2)
  {   
     int i,len;
      
      if(s1->length<s2->length)
          len=s1->length;
       else len=s2->length;


    while(i<len)
     {
        if(s1->str[i]>s2->str[i])
        return (result=1);
         else if(s1->str[i]<s2->str[i]) return (result=-1);
               else
                    s1->str[i]=s2->str[i]; return(result=0);
     
                     i++;
     }
  }

    void main()
    {
     printf("初始化字符串s1");
   
     creatstring(s1);
    printf("初始化字符串s2");
    creatstring(s2);
    comparestr(s1,s2);

    printf("result=%d",result);
      return 0;
    }用数据结构中的传5实现两个字符串的比较 编译的时候没问题 可咋运行不出结果 在win tc下运行的
搜索更多相关主题的帖子: result return include 
2012-09-26 15:12
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
收藏
得分:7 
seqstring *s,*s1,*s2;
空指针不分配内存  就直接拿过来用。。。
  else
                    s1->str[i]=s2->str[i]; return(result=0);
这个else是做什么处理。。。

2012-09-26 16:22
IT飞飞
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2012-9-8
收藏
得分:0 
回复 2楼 寒风中的细雨
直接在前面加上S1=(seqstring*)malloc(sizeof(seqstring));
s2=seqstring*)malloc(sizeof(seqstring));就可以吗?
  else那条语句是 如果两个字符串相等 就返回 0;
2012-09-26 22:02
IT飞飞
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2012-9-8
收藏
得分:0 
回复 3楼 IT飞飞
#include "stdafx.h"


#include "stdio.h"
#include "conio.h"
#include"string.h"
#include"stdlib.h"
#define MAXSIZE 100

typedef  struct
{
    char str[MAXSIZE];
    int length;


}seqstring;
int i,result;

seqstring *s,*s1,*s2;

seqstring *init_seqstring(seqstring*s)
{
  s=(seqstring*)malloc(sizeof(seqstring));
  return s;
}


seqstring *creatstring(seqstring *s)
{
  int i=0;char ch;
  while((ch=getchar())!='\0')  


  {
     s->str[i]=ch;
     i++;
  
  }


   return s;


}

   
  int comparestr(seqstring *s1,seqstring *s2)
  {   
     int i,len;
      
      if(s1->length<s2->length)
          len=s1->length;
       else len=s2->length;


    while(i<len)
     {
        if(s1->str[i]>s2->str[i])
        return (1);
         else if(s1->str[i]<s2->str[i]) return (-1);
               else
                    s1->str[i]=s2->str[i]; return(0);
     
                     i++;
     }
  }

    void main()
    {int m;
  init_seqstring(s1);

   init_seqstring(s2);
     printf("初始化字符串s1");
   
     creatstring(s1);
    printf("初始化字符串s2");
    creatstring(s2);
   m=comparestr(s1,s2);

    printf("m=%d",m);
      getch();
    }
程序还是不能运行
2012-09-26 22:21
zhu224039
Rank: 8Rank: 8
等 级:贵宾
威 望:17
帖 子:862
专家分:792
注 册:2012-7-29
收藏
得分:7 
while((ch=getchar())!='\0')    这个判断数据输入结束,是没有键来表示的吧

你可以用 ENTER 或者 是空格来表示一个字符串结束

  int comparestr(seqstring *s1,seqstring *s2)   -----------------》函数还回值 这个知识点 希望楼主复习下
  {   
     int i,len;
      
      if(s1->length<s2->length)
          len=s1->length;
       else len=s2->length;


    while(i<len)         ---------》这个函数 请问你想他做什么呢?  如果两个字符串"wo ai"和"wo ai ni"比较会怎么执行,请楼主推敲算法
     {
        if(s1->str[i]>s2->str[i])             ---》result  你都不声明  请问不报错误么
        return (result=1);    ------------------》 return (result=1);更改成 return(1) 你的目的就达到了                          
         else if(s1->str[i]<s2->str[i]) return (result=-1);
               else                                    -------------------------------------》这个地方 if else if   else这部分知识再回头看看
                    s1->str[i]=s2->str[i]; return(result=0);
     
                     i++;
     }
  }


我要成为嘿嘿的黑客,替天行道
2012-09-26 22:28
IT飞飞
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2012-9-8
收藏
得分:0 
回复 5楼 zhu224039
   while(i<len)         ---------》这个函数 请问你想他做什么呢?  如果两个字符串"wo ai"和"wo ai ni"比较会怎么执行,请楼主推敲算法
     先比较两个字符串的长度 然后把短的字符串的长度给len
  你看我后面回的哪个帖子  帮忙找找错误  编译能通过 就是运行的时候有错误  谢谢啊!
2012-09-26 22:41
zhu224039
Rank: 8Rank: 8
等 级:贵宾
威 望:17
帖 子:862
专家分:792
注 册:2012-7-29
收藏
得分:0 
我不帮你找错,你把我那个注解方面的,照着书看看  学习下  自己再想想
return(result=1)  改成  return 1

我要成为嘿嘿的黑客,替天行道
2012-09-26 23:35
zhu224039
Rank: 8Rank: 8
等 级:贵宾
威 望:17
帖 子:862
专家分:792
注 册:2012-7-29
收藏
得分:0 
while(i<len)         ---------》这个函数 请问你想他做什么呢?  如果两个字符串"wo ai"和"wo ai ni"比较会怎么执行,请楼主推敲


这个会造成你的 数组引用越界  通俗点将 a[10]和b[12] 进行比较   while(i<len)  这个时候 len=12
循环过程中 数组  a  能引用 a[12] 吗?

我给你说的就是这个呀

输入两个字符串  比较两个字符串  只比较字符串  第一个字母 的 ASCII  是这么个意思么


[ 本帖最后由 zhu224039 于 2012-9-26 23:44 编辑 ]

我要成为嘿嘿的黑客,替天行道
2012-09-26 23:41
allenz0810
Rank: 2
等 级:论坛游民
帖 子:44
专家分:38
注 册:2012-9-3
收藏
得分:7 
楼主 你的main 是 void 怎么会return 0?
你comparestr 函数 下面的 i 没有给初始值 怎么用?
你的 length 也没有初始值怎么用?至少在你creatstring里面的 for 循环下面  要length++把 然后后面才可以用。
2012-09-29 10:16
快速回复:急急急!!求帮助啊!!
数据加载中...
 
   



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

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