| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2431 人关注过本帖
标题:[求助]写一个函数连接2个字符串(这个也有问题了)
只看楼主 加入收藏
anelwl
Rank: 1
等 级:新手上路
帖 子:70
专家分:0
注 册:2007-7-26
收藏
得分:0 
回复:(boot2046)你都说了指针只是指向字符串首地址...
所以系统为指针用malloc分配了一段地址,使指针有明确的指向

2007-08-07 15:50
boot2046
Rank: 2
等 级:新手上路
威 望:3
帖 子:168
专家分:0
注 册:2007-7-23
收藏
得分:0 
那你说你的缓冲区有多大?

Linux是简单的,你不需要成为天才也能理解这种简单,Windows是复杂的,就算你是天才也不能理解这种复杂
2007-08-07 15:53
anelwl
Rank: 1
等 级:新手上路
帖 子:70
专家分:0
注 册:2007-7-26
收藏
得分:0 
回复:(boot2046)那你说你的缓冲区有多大?
一般来说,缓冲区不会很大的,缓冲区是通过堆栈来实现的,因此如果你定义象a[100*1024]的数组的时候,你就该考虑太大的临时变量会否把堆栈冲掉。
这里完全没有考虑缓冲区大小的必要,因为一般来说你输入的字符串不可能很长

2007-08-07 16:00
boot2046
Rank: 2
等 级:新手上路
威 望:3
帖 子:168
专家分:0
注 册:2007-7-23
收藏
得分:0 
那你就说这个程序里的缓冲区是多大???不会很大,那到底是多大呢?



Linux是简单的,你不需要成为天才也能理解这种简单,Windows是复杂的,就算你是天才也不能理解这种复杂
2007-08-07 16:04
boot2046
Rank: 2
等 级:新手上路
威 望:3
帖 子:168
专家分:0
注 册:2007-7-23
收藏
得分:0 
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
char *StrCatenate(char *s1,char *s2);
int main()
{
char *str1,*str2;
str1=(char*)malloc(sizeof(char));
str2=(char*)malloc(sizeof(char));
printf("Please input str1:\n");
scanf("%15s",str1);
printf("Please input str2:\n");
scanf("%15s",str2);
printf("result=%s\n",StrCatenate(str1,str2));
printf("result=%s\n",StrCatenate(str1,str2));
return 0;
}
char *StrCatenate(char *s1,char *s2)//函数必须返回操作数,即必须有输出接口
{ char *ps;//这里定义一个char 指针,使得其指想s1的初始地址
ps=s1;
s1+=strlen(s1);
while(*s1++=*s2++);
return ps; //返回s1的初始地址
}


我想把str2的字符串复制两份到str1,那么我多运行一次StrCatenate(str1,str2),为什么程序就当掉了呢

Linux是简单的,你不需要成为天才也能理解这种简单,Windows是复杂的,就算你是天才也不能理解这种复杂
2007-08-07 16:06
viky2003
Rank: 5Rank: 5
等 级:职业侠客
帖 子:375
专家分:383
注 册:2007-4-11
收藏
得分:0 
str1=(char*)malloc(100*sizeof(char));
str2=(char*)malloc(100*sizeof(char));
..........
StrCatenate(char *s1,char *s2)
{
s1+=strlen(s1);--------很危险的行为,如果你把s1输入99个字符试试!!!最好s3=strlen(s1)+strle(s2+1;
while((*s1++=*s2++));
}
没有错误是因为100足够容纳s1和s2种的字符!!

要练习算法就来http:///!!有挑战哦!!
2007-08-07 17:01
boot2046
Rank: 2
等 级:新手上路
威 望:3
帖 子:168
专家分:0
注 册:2007-7-23
收藏
得分:0 
呵呵,这里只是说明一下这个程序的问题,在实际的运用中还得具体问题具体分析

Linux是简单的,你不需要成为天才也能理解这种简单,Windows是复杂的,就算你是天才也不能理解这种复杂
2007-08-07 17:04
viky2003
Rank: 5Rank: 5
等 级:职业侠客
帖 子:375
专家分:383
注 册:2007-4-11
收藏
得分:0 
删我帖子晕!!!

要练习算法就来http:///!!有挑战哦!!
2007-08-07 17:27
viky2003
Rank: 5Rank: 5
等 级:职业侠客
帖 子:375
专家分:383
注 册:2007-4-11
收藏
得分:0 
回复:(boot2046)呵呵,这里只是说明一下这个程序的...
同意!!!

要练习算法就来http:///!!有挑战哦!!
2007-08-07 17:31
baby69yy2000
Rank: 1
等 级:新手上路
帖 子:67
专家分:0
注 册:2007-4-5
收藏
得分:0 
回复:(viky2003) str1=(char*)malloc(100*sizeof(...

说的有道理呀
我这个小程序不是动态申请内存的呀
怎么才能实现动态内存申请呢?请前辈指点一下。


2007-08-07 17:43
快速回复:[求助]写一个函数连接2个字符串(这个也有问题了)
数据加载中...
 
   



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

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