| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 714 人关注过本帖
标题:这段代码哪里错了
只看楼主 加入收藏
苏秦
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2013-1-18
结帖率:75%
收藏
 问题点数:0 回复次数:10 
这段代码哪里错了
题目:写一函数fun的功能是:先将在字符串s中的字符按正序存放到t串中,然后把s中的字符按逆序连接到t串的后面。
int fun(char a[])
{
    char b[100];
    int i,len;
    len=strlen(a);
    strcpy(b,a);
    for(i=0;i<len;i++)
    a[i+len]=b[len-i-1];
    printf("%s",a);
}
main()
{
    char s[100];
    scanf("%s",s);
    printf("%s",fun(s));
}
这段代码哪里错了,能运行,但是会提示内存什么的问题
搜索更多相关主题的帖子: fun 字符串 
2013-01-21 13:48
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
一看到两个字符串的尺寸都是100,就知道有将有什么问题。偶然的成功更可怕。

授人以渔,不授人以鱼。
2013-01-21 13:56
苏秦
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2013-1-18
收藏
得分:0 
什么意思吖?是因为范围太大了吗?那只是尺寸的问题?
b串是由a串复制过去的,然后再将a串的逆序放进b串中去,那么b串的尺寸应该比a大一倍。
但是我改了之后,还是有这样的问题,如果a=ABCDE,出来的是ABCDEEDCBA,后来还跟了一些乱七八糟的东西

printf("我们是屌丝\n");
2013-01-21 14:04
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
尺寸要控制是第一步,其次你的乱码是后面拼接逆序串时没有补上'\0'造成的。时刻记住:C的字符串以'\0'结束!

授人以渔,不授人以鱼。
2013-01-21 14:08
苏秦
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2013-1-18
收藏
得分:0 
懂是懂了,但是不知道怎么改

printf("我们是屌丝\n");
2013-01-21 14:15
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
1.把尺寸加大到原串的两倍;
2.在拼接的最后再加一个字符'\0';
3.不该在函数fun()中输出,返回a,在main()中输出(这就是所谓的模块化应该要注意的边界划分,不该它做的事不要做)。

授人以渔,不授人以鱼。
2013-01-21 14:20
苏秦
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2013-1-18
收藏
得分:0 
int fun(char a[],char b[])
{
    int i,len;
    len=strlen(a);
    strcpy(b,a);
    for(i=0; i<len; i++)
        b[len+i]=a[len-i-1];
    b[2*len]='\0';
}
main()
{
    char s[40],t[80];
    scanf("%s",s);
    fun(s,t);
    printf("%s",t);
}


总算弄出来了= =,谢谢你

printf("我们是屌丝\n");
2013-01-21 15:24
禾斗
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2013-1-21
收藏
得分:0 
为什么字符串是汉语就不行了呢
2013-01-21 17:33
魍丶紫
Rank: 2
来 自:浙江台州
等 级:论坛游民
帖 子:6
专家分:21
注 册:2013-1-19
收藏
得分:0 
回复 8楼 禾斗
我不会用术语..  坐等专业人士

红颜色  我已没有勇气问你 离开的理由
2013-01-22 13:38
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
以下是引用禾斗在2013-1-21 17:33:52的发言:

为什么字符串是汉语就不行了呢

在Unicode编码中,每个汉字是两个char,而你们学习的都是char字符串。现代C/C++都支持宽字符wchar_t,但学校和考试都只教char知识,当然不知道怎么处理汉字了。

授人以渔,不授人以鱼。
2013-01-22 14:44
快速回复:这段代码哪里错了
数据加载中...
 
   



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

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