| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2629 人关注过本帖
标题:关于实现标准库函数strncpy遇到的问题
取消只看楼主 加入收藏
yuki
Rank: 2
等 级:新手上路
威 望:5
帖 子:508
专家分:0
注 册:2005-2-4
收藏
 问题点数:0 回复次数:1 
关于实现标准库函数strncpy遇到的问题

大家帮我看看以下代码。。。。。为什么我定义char *s = NULL被函数调用时会有问题?然而如果我在strncpy函数实现中使用内存分配的话,对于char *s也无法正常返回结果。。。请问这究竟是为什么。。。。。。。谢谢。。。。 #include <iostream>

using namespace std;

int usr_strlen(const char *s); char *usr_strncpy(char *des,const char *src,int size);

int main() { char s[5]; /* Error: char *s = NULL */ cout << usr_strncpy(s,"Hello,World!",5) << endl;

return 0; }

int usr_strlen(const char *s) { int result = 0; while(*s++ != '\0') result++;

return result; }

char *usr_strncpy(char *des,const char *src,int size) { int i; char *p = des; if(src == NULL) { return NULL; des = NULL; }

for(i = 0; i < (usr_strlen(src) < size ? usr_strlen(src) : size); i++) { *des = *src; des++; src++; } *des = '\0'; return p; }

搜索更多相关主题的帖子: strncpy 函数 
2005-02-11 10:15
yuki
Rank: 2
等 级:新手上路
威 望:5
帖 子:508
专家分:0
注 册:2005-2-4
收藏
得分:0 
恩,两位大大都说得很有道理,我已经差不多弄明白来,谢谢。

首先我已经将knocker大大说得des=NULL语句提到了return NULL;上面去,让后单独声明了一个变量int limited = usr_strlen(src) &lt; size ? usr_strlen(src) : size;这样再循环语句中i &lt; limited,这样就不会重复计算了。

然后kai大大说得用new语句来给字指针初始化,有个问题我还不太明白,为什么在那个strncpy函数中对des指针同样初始化却无法返回正确的结果?

我们都在命运湖上荡舟划桨,波浪起伏使我们无法逃离孤行;如果我们迷失方向,波浪将指引我们穿过另一天曙光
2005-02-11 17:30
快速回复:关于实现标准库函数strncpy遇到的问题
数据加载中...
 
   



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

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