我来我网
https://5come5.cn
 
您尚未 登录  注册 | 菠菜 | 软件站 | 音乐站 | 邮箱1 | 邮箱2 | 风格选择 | 更多 » 
 

本页主题: 大家帮我看看c的问题 显示签名 | 打印 | 加为IE收藏 | 收藏主题 | 上一主题 | 下一主题

ppdoll



性别: 帅哥 状态: 该用户目前不在线
等级: 品行端正
发贴: 140
威望: 0
浮云: 1219
在线等级:
注册时间: 2007-09-13
最后登陆: 2008-06-24

5come5帮你背单词 [ many /'meni/ a. 许多的,多的;pron. 许多人或物,许多 ]


大家帮我看看c的问题

Copy code
#include "stdio.h"


typedef struct
{
    char ch[40];
    int len;
}SString;

void StrInsert(SString *s,int pos,SString *t)
{
    int i;
    if(pos<0||pos>s->len)
    printf("pos is err\n");
    if(s->len+t->len<=40)
    {
    for(i=s->len-1;i>=pos;i--)
   
    s->ch[i+t->len]= s->ch[i];
    for(i=pos;i<t->len+pos;i++)
    s->ch[i]=t->ch[i-pos];
    s->len=s->len+t->len;
    }
    else
    printf("insert is err\n");
}

void InitStr(SString *s)
{
    int i=0;
    char k[40];
    scanf("%s",k);
    for(i;k[i]!=0;i++)
    s->ch[i]=k[i];   
    s->len=i;
   
}


void main()
{
void StrInsert(SString *s,int pos,SString *t);
void InitStr(SString *s);

SString *a,*t;
InitStr(a);
InitStr(t);
StrInsert(a,2,t);
printf("%s\n%d",a->ch,a->len);

}

为什么结果有时候对,有时候不对呢?
比如我
a.jpg


[ 此帖被ljpdxj在2007-12-02 17:17重新编辑 ]
顶端 Posted: 2007-12-02 15:49 | [楼 主]
ppdoll



性别: 帅哥 状态: 该用户目前不在线
等级: 品行端正
发贴: 140
威望: 0
浮云: 1219
在线等级:
注册时间: 2007-09-13
最后登陆: 2008-06-24

5come5帮你背单词 [ potential /pə'tenəl/ a. 潜在的,可能的;n. 潜在可能的,潜力 ]


后面两个符号是怎么出来的啊?
顶端 Posted: 2007-12-02 15:50 | [1 楼]
yinx



性别: 帅哥 状态: 该用户目前不在线
等级: 人见人爱
家族: 丢丢
发贴: 2333
威望: 0
浮云: 1260
在线等级:
注册时间: 2006-09-15
最后登陆: 2009-05-11

5come5帮你背单词 [ pond /pond/ n. 池塘 ]


用[ code]  [ /code]把代码括起来……
顶端 Posted: 2007-12-02 16:10 | [2 楼]
ppdoll



性别: 帅哥 状态: 该用户目前不在线
等级: 品行端正
发贴: 140
威望: 0
浮云: 1219
在线等级:
注册时间: 2007-09-13
最后登陆: 2008-06-24

5come5帮你背单词 [ ease /i:z/ n. 容易,自在,舒适,安逸;v. 缓和,减轻 ]


好了
顶端 Posted: 2007-12-02 16:12 | [3 楼]
yinx



性别: 帅哥 状态: 该用户目前不在线
等级: 人见人爱
家族: 丢丢
发贴: 2333
威望: 0
浮云: 1260
在线等级:
注册时间: 2006-09-15
最后登陆: 2009-05-11

5come5帮你背单词 [ club /klΛb/ n. 俱乐部,夜总会,棍棒,球棒 ]


Copy code
    for(i=s->len-1;i>=pos;i--)   
    s->ch[i+t->len]= s->ch[i];/*这个地方的怎么加不上去啊。。。


这里,忘了把S串的最后那个0x0加到新串上,所以新S串在应该结束的地方没有结束。
把for改成这样:
Copy code
    for(i=s->len;i>=pos;i--)   
顶端 Posted: 2007-12-02 16:14 | [4 楼]
ppdoll



性别: 帅哥 状态: 该用户目前不在线
等级: 品行端正
发贴: 140
威望: 0
浮云: 1219
在线等级:
注册时间: 2007-09-13
最后登陆: 2008-06-24

5come5帮你背单词 [ melody /'melədi/ n. 曲调,旋律 ]


改后还有问题
远程图片:b.jpg
顶端 Posted: 2007-12-02 16:21 | [5 楼]
ppdoll



性别: 帅哥 状态: 该用户目前不在线
等级: 品行端正
发贴: 140
威望: 0
浮云: 1219
在线等级:
注册时间: 2007-09-13
最后登陆: 2008-06-24

5come5帮你背单词 [ used /ju:zd, ju:st/ a. 用过的,旧的,习惯于…的;v. 过去惯于 ]


改后只是出问题的长度有7,8,变为了9,10
顶端 Posted: 2007-12-02 16:24 | [6 楼]
ppdoll



性别: 帅哥 状态: 该用户目前不在线
等级: 品行端正
发贴: 140
威望: 0
浮云: 1219
在线等级:
注册时间: 2007-09-13
最后登陆: 2008-06-24

5come5帮你背单词 [ whoever /hu:'evə/ pron. 谁,无论夜班,不管谁,究竟是谁 ]


按我的理解最后那个0x0应该是在我为字符数组赋值结束后自动加上去,不知道理解对不对
顶端 Posted: 2007-12-02 16:38 | [7 楼]
luwen



性别: 帅哥 状态: 该用户目前不在线
头衔: 无我相
等级: 人见人爱
发贴: 4372
威望: 0
浮云: 1120
在线等级:
注册时间: 2006-09-14
最后登陆: 2013-09-25

5come5帮你背单词 [ intensive /in'tensiv/ a. 精心的,专心致志的,深入细致的 ]


Quote:
引用第7楼ppdoll于2007-12-02 16:38发表的  :
按我的理解最后那个0x0应该是在我为字符数组赋值结束后自动加上去,不知道理解对不对

不对
顶端 Posted: 2007-12-02 16:43 | [8 楼]
ppdoll



性别: 帅哥 状态: 该用户目前不在线
等级: 品行端正
发贴: 140
威望: 0
浮云: 1219
在线等级:
注册时间: 2007-09-13
最后登陆: 2008-06-24

5come5帮你背单词 [ metallurgy /me'tæləd3əi/ n. 冶金学,治金术 ]


Quote:
引用第8楼luwen于2007-12-02 16:43发表的  :

不对

那难道只是初始化字符数组时,才自动加
顶端 Posted: 2007-12-02 16:48 | [9 楼]
yinx



性别: 帅哥 状态: 该用户目前不在线
等级: 人见人爱
家族: 丢丢
发贴: 2333
威望: 0
浮云: 1260
在线等级:
注册时间: 2006-09-15
最后登陆: 2009-05-11

5come5帮你背单词 [ yet /jet/ conj. 然而,不过;ad. 到目前为止,现在还,更,还,沿,仍然 ]


我运行不了楼主的程序……
Copy code
InitStr()里给s->ch[i]赋值之前没有先为s分配空间……
顶端 Posted: 2007-12-02 19:56 | [10 楼]
hhbhhb



性别: 帅哥 状态: 该用户目前不在线
等级: 品行端正
发贴: 292
威望: 0
浮云: 1105
在线等级:
注册时间: 2006-09-21
最后登陆: 2009-03-16

5come5帮你背单词 [ position /pə'ziən/ n. 位置,方位,职位,工作,姿势,姿态,处境,立场,地位,身分 ]


Copy code
#include<stdio.h>
#include<string.h>

typedef struct {
    char ch[40];
    int len;
}SString;

void StrInsert(SString *s, int pos, SString *t) {
    int i;
    if(pos<0||pos>s->len) { printf("pos is err\n"); return; }
    if(s->len+t->len>=40) { printf("insert is err\n"); return; }

    for(i=s->len-1;i>=0;i--) s->ch[i+t->len]=s->ch[i];
    for(i=pos;i<t->len+pos;i++) s->ch[i]=t->ch[i-pos];
    s->len+=t->len;
    s->ch[s->len]=0;
}

void InitStr(SString *s) {
    scanf("%s", &s->ch);
    s->len = strlen(s->ch);
}

void main() {
    SString a, t;
    InitStr(&a);
    InitStr(&t);
    StrInsert(&a, 2, &t);
    printf("%s\n%d", a.ch, a.len);
}
本帖最近评分记录:
  • 浮云:5(zhd32) 好人
  • 顶端 Posted: 2007-12-02 21:07 | [11 楼]
    ppdoll



    性别: 帅哥 状态: 该用户目前不在线
    等级: 品行端正
    发贴: 140
    威望: 0
    浮云: 1219
    在线等级:
    注册时间: 2007-09-13
    最后登陆: 2008-06-24

    5come5帮你背单词 [ operator /'opəreitə/ n. 操作员,(总机)接线员,(外科)手术员 ]


    谢谢了
    顶端 Posted: 2007-12-02 23:30 | [12 楼]
    我来我网·5come5 Forum » 程序员之家

    Total 0.017502(s) query 5, Time now is:11-22 16:13, Gzip enabled
    Powered by PHPWind v5.3, Localized by 5come5 Tech Team, 黔ICP备16009856号