| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 374 人关注过本帖
标题:希望有高手相助,
只看楼主 加入收藏
bai377918952
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2014-11-17
结帖率:0
收藏
已结贴  问题点数:10 回复次数:3 
希望有高手相助,
#include "stdio.h"
#include "string.h"
void insert(char *p1,char *p2,int f)
{
    char s3[50];
    int i,a,b;
    a=f;
    b=strlen(p2);
    for(i=0;i<f;i++)
    s3[i]=*(p1+i);
    for(i=0;i<b;i++)
    s3[a+i]=*(p2+i);
    for(i=a;i<strlen(p1);i++)
    s3[b+i]=*(p1+i);
    printf("%s\n",s3);

}
main()
{
    char s1[100],s2[100];
    int f;
    printf("请输入第一个字符串:\n");
    gets(s1);
    printf("请输入第二个字符串:\n");
    gets(s2);
    printf("请输入插入位置:\n");
    scanf("%d",&f);
    insert(s1,s2,f);

}

我运行结果后面出现乱码, 希望有大神帮忙修改..
搜索更多相关主题的帖子: include insert 字符串 
2015-06-08 19:05
calix
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:28
帖 子:249
专家分:1442
注 册:2015-5-4
收藏
得分:5 
b=strlen(p2);
要得到数组的长度,strlen的参数只能用数组名,不能用指针,用指针只能得到1
2015-06-08 20:11
取名字
Rank: 8Rank: 8
等 级:贵宾
威 望:21
帖 子:236
专家分:924
注 册:2015-4-27
收藏
得分:5 
楼上的说法不对,楼主的程序中p2与s2都指向同一个地址,即在大部分场合,p2与s2可以互相替代着用,所以用p2也可以正确地得到s2的长度。
楼主的程序之所以在后面会出现乱码,是因为没有给字符串添加字符串结束符'\0',在insert函数中,“s3[b+i]=*(p1+i);”之后加上“s3[b+i]='\0';”,编译运行就不会在字符串后面出现乱码了。
2015-06-08 21:17
bai377918952
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2014-11-17
收藏
得分:0 
回复 3楼 取名字
谢谢了, 原来这样, 我是新手
2015-06-08 22:08
快速回复:希望有高手相助,
数据加载中...
 
   



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

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