| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 659 人关注过本帖
标题:串的初始化问题
只看楼主 加入收藏
浮图楼兰
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2011-11-24
结帖率:0
收藏
已结贴  问题点数:20 回复次数:5 
串的初始化问题
#include<stdio.h>
#define MAX 10
typedef struct{
    char data[MAX];
    int length;
}String;

int Pattern(String a,String b)
{
    int i=0,j=0;
    while(i<a.length-b.length)
    {
        while(j<b.length&&a.data[i]==b.data[i])
        {
           i++;
           j++;
        }
        if(j<b.length)
        {
            i=i-j+1;
            j=0;
        }
        else
            return i-j;
    }
    return -1;
}

void main()
{
    int a=0;
    String p={'a','b','c',d'','e',5};
    String q={'c','d',2};
    a=Pattern(p,q);
    printf("首次出现的位置是:\n");
    printf("%d\n",a);
}

这里对p,q串的初始化错了吗?结果为什么不对?请高人指点!!!
   
搜索更多相关主题的帖子: include return 
2011-11-25 21:22
非死亡!
Rank: 8Rank: 8
来 自:四川
等 级:蝙蝠侠
帖 子:179
专家分:760
注 册:2011-10-31
收藏
得分:5 
赋值有问题 结构体赋值要顺序赋值 你的p={'a'...}最后的5是数字但是编译器不会认为你在为lengh赋值,5会被认为是ascii码.
记住结构体,数组,向量等在内存中是连续分配空间的,你也要连续赋值,不能跳过中间的不赋值,而给后面的赋值.
还有你的 int a=0; 这里你的是分中文号 要英文的 建议你在编程时设置输入法里改成在中文状态下用英文标点.
附图:
-----------------------------------------------------------
|基本设置----初始化------中文状态下用英文标点打勾---ok;   |
-----------------------------------------------------------

能力 技巧
2011-11-25 21:49
hxcet
Rank: 4
等 级:业余侠客
帖 子:78
专家分:229
注 册:2011-11-15
收藏
得分:5 
初始化的确是错了。。。你的p和q是对象,不是数组,故不能定义p={'a','b','c',d'','e',5};q={'c','d',2};
p和q里的成员data才是数组,所以你想要定义数组的话要用
String p,q;
p.data= 和 q.data=
还有一个问题是你的length没有定义,函数体内a.length和b.length都没有赋值,程序无法执行的

[ 本帖最后由 hxcet 于 2011-11-25 22:14 编辑 ]
2011-11-25 21:56
浮图楼兰
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2011-11-24
收藏
得分:0 
嗯!谢谢!
2011-11-25 22:04
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:5 
编译都不过,错误太多

总有那身价贱的人给作业贴回复完整的代码
2011-11-25 22:07
xlj3105098
Rank: 2
等 级:论坛游民
帖 子:20
专家分:28
注 册:2011-10-8
收藏
得分:5 
#include<stdio.h>
 #define MAX 10
 typedef struct{
     char data[MAX];
     int length;
 }String;
 
int Pattern(String a,String b)
 {
     int i=0,j=0;
     while(i<a.length-b.length)
     {
         while(j<b.length&&a.data[i]==b.data[i])
         {
            i++;
            j++;
         }
         if(j<b.length)
         {
             i=i-j+1;
             j=0;
         }
         else
             return i-j;
     }
     return -1;
 }
 
void main()
 {
     int a=0;
     String p={'a','b','c','d','e',5};
     String q={'c','d',2};
     a=Pattern(p,q);
     printf("首次出现的位置是:\n");
     printf("%d\n",a);
 }
2011-11-25 23:07
快速回复:串的初始化问题
数据加载中...
 
   



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

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