| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1292 人关注过本帖
标题:[求助一个自编字符串插入函数的问题.
只看楼主 加入收藏
tx42103632
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2005-11-26
收藏
 问题点数:0 回复次数:7 
[求助一个自编字符串插入函数的问题.

有一个字符串插入函数,strcat函数只把字符串连接到后面,我想实现字符串前插,可看到的结果却不是那样子的,代码如下:
#include"stdio.h"
#include"string.h"
unsigned char cBuf[512];
int InsertPre(unsigned char n)
{
unsigned int i;
for(i=strlen(cBuf);i>0;--i)
cBuf[i+n]=cBuf[i];
return 1;
}
main()
{
unsigned char i;
unsigned char Flag='c'; //测试,在cBuf前面插入一个字符.
unsigned char exit_flag;
printf("please input string:\n");
scanf("%s",cBuf):
InsertPre(1);
for(i=0;i<1;i++)
cBuf[i]=Flag;
printf("%s",cBuf);
while(1)
{
scanf("%d",&exit_flag):
if(exit_flag==1) exit(0);
else continue;
}
}
当我输入一个字符串给cBuf,得到的运行结果是:输入:fire,结果:ciire!预期结果应该为:cfire!
根本没有把Flag的字符字符插入.

[此贴子已经被作者于2006-2-28 10:28:36编辑过]

搜索更多相关主题的帖子: 函数 字符 
2006-02-28 10:13
feng1256
Rank: 4
等 级:贵宾
威 望:14
帖 子:2899
专家分:0
注 册:2005-11-24
收藏
得分:0 
以下是引用tx42103632在2006-2-28 10:13:00的发言:

有一个字符串插入函数,strcat函数只把字符串连接到后面,我想实现字符串前插,可看到的结果却不是那样子的,代码如下:
#include"stdio.h"
#include"string.h"
unsigned char cBuf[512];
void InsertPre(unsigned char n)
{
int i;
for(i=strlen(cBuf);i>=0;--i)
cBuf[i+n]=cBuf[i];
}
main()
{
unsigned char i;
unsigned char Flag='c';
unsigned char exit_flag;
printf("please input string:\n");
scanf("%s",cBuf);
InsertPre(1);
for(i=0;i<1;i++)
cBuf[i]=Flag;
printf("%s",cBuf);
while(1)
{
scanf("%d",&exit_flag);
if(exit_flag==1) exit(0);
else continue;
}
}
当我输入一个字符串给cBuf,得到的运行结果是:输入:fire,结果:ciire!预期结果应该为:cfire!
根本没有把Flag的字符字符插入.



叁蓙大山:工謪、稅務、嗣發 抱歉:不回答女人的问题
2006-02-28 14:40
feng1256
Rank: 4
等 级:贵宾
威 望:14
帖 子:2899
专家分:0
注 册:2005-11-24
收藏
得分:0 

你这个程序问题多,你还是用指针写个吧,肯定比这简洁,而且功能更好
还有strcat() 里参数的位置换一下,不就实现你要的功能了


叁蓙大山:工謪、稅務、嗣發 抱歉:不回答女人的问题
2006-02-28 14:43
tx42103632
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2005-11-26
收藏
得分:0 

strcat交换一下参数位置是可以,但是限于一些条件,我要插入的字符串数组(str0)空间有限.而cBuf空间才足够.所以想自己写一个前插的字符串.空间不好控制也是不用指针的原因.
又for(i=strlen(cBuf);i>=0;--i); 为什么要i大于等于零??如果这样的话,会多移动一个字符位置的

2006-02-28 15:40
feng1256
Rank: 4
等 级:贵宾
威 望:14
帖 子:2899
专家分:0
注 册:2005-11-24
收藏
得分:0 

数组下标是从0开始的


叁蓙大山:工謪、稅務、嗣發 抱歉:不回答女人的问题
2006-02-28 16:11
tx42103632
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2005-11-26
收藏
得分:0 

//if cBuf[512]="girl",cBuf[0]='g'
// cBuf[1]='i'
// cBuf[2]='r'
// cBuf[3]='l' //其他位初始化为0;
for(i=strlen(cBuf);i>0;--i)
cBuf[i+n]=cBuf[i];//n为字符串"girl"向后移动的个数.
//执行情况分析:--i是先自减i值,然后使用i值.
 i=4时; cBuf[3+n]=cBuf[3];
i=3 cBuf[2+n] =cBuf[2];
i=2 cBuf[1+n]=cBuf[1];
i=1 cBuf[0+n]=cBuf[0];
循环结束.
很简单,为什么还有疑问!

2006-02-28 17:40
kimyier
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2005-10-7
收藏
得分:0 
int InsertPre(unsigned char n)
函数是错误的,达不到你说功能

2006-02-28 21:19
feng1256
Rank: 4
等 级:贵宾
威 望:14
帖 子:2899
专家分:0
注 册:2005-11-24
收藏
得分:0 
i=1 cBuf[0+n]=cBuf[0];

你。。。。你写的i=1 ,可cBuf[0+n]=cBuf[0];里写的0+n,这里的0就是i啊 还要问我为什么i>=0 ??


叁蓙大山:工謪、稅務、嗣發 抱歉:不回答女人的问题
2006-02-28 21:47
快速回复:[求助一个自编字符串插入函数的问题.
数据加载中...
 
   



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

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