| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1440 人关注过本帖
标题:对strncpy && strncat 有些不解,望赐教
只看楼主 加入收藏
wubizao
Rank: 1
来 自:荆州长大电信
等 级:新手上路
帖 子:223
专家分:0
注 册:2006-6-24
收藏
 问题点数:0 回复次数:5 
对strncpy && strncat 有些不解,望赐教
假设有两个字符串,str1和str2,姑且设str1为目的字符串,str2为源字符串.
设它们的内容为
char str1[10] = {'L','o','v','e','\0','a','b','c','d','e'};
即为: Love\0abcde
char str2[10] = "hate";
即为: hate\0\0\0\0\0\0

此时应用strncat(str1,str2,3);
结果str1为: Lovehat\0de;
红色部分(\0)是这个strncat()函数自动添加的;

若应用strncpy(str1,str2,3);
结果str1为: hate\0\0\0\0\0\0
红色部分(hat)后并未自动添加\0;

对于以上理解,不知对不对,望赐教

[[it] 本帖最后由 wubizao 于 2008-2-15 22:27 编辑 [/it]]
搜索更多相关主题的帖子: strncat strncpy amp 字符 
2008-02-15 22:22
wubizao
Rank: 1
来 自:荆州长大电信
等 级:新手上路
帖 子:223
专家分:0
注 册:2006-6-24
收藏
得分:0 
咋没有哪位同志指教下?

在路上走,看见了C,从此爱上了她
2008-02-16 08:55
aprogram
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2008-2-15
收藏
得分:0 
strncpy没有自动添加截至符的功能
如果想要加截至符必须要str1[3] = '\0';

学C语言多年,如今才知道一事无成
2008-02-16 09:34
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:0 
《C Primer Plus(第五版)中文版》中有这2个函数的说明

你看的不是第五版吗?

/* 以下是我看书时记录下的 */
strcpy()   接受2个字符串参数,把第二个字符串拷贝到第一个字符串(类似于赋值) (string copy)
           第一个参数为目标(target)字符串,第二个字符串为源(source)字符串,
           把源复制到目标。返回第一个参数的值。第一个参数不需要指向数组的开始。

strncpy()  比strcpy() 多一个参数,第三个参数,第三个参数指明最大可复制的字符数。
           函数结束后。在源字符串的最后一个字符赋'\0',以确保这个字符串可靠。

strcat()   接受两个字符串参数,把第二个字符串拷贝添加到第一个字符串,
           返回第一个字符串中第一个字符的地址 (string concatenation)
           不检查第一个数组是否能够容纳第二个字符串

strncat()  和 strcat() 一样,但比它多一个参数,第三个参数为添加的字符数
           MAX - strlen(str1) - 1

—>〉Sun〈<—
2008-02-17 00:44
xianshizhe111
Rank: 1
等 级:新手上路
帖 子:1451
专家分:0
注 册:2007-12-8
收藏
得分:0 
顶一下
2008-02-17 01:14
wubizao
Rank: 1
来 自:荆州长大电信
等 级:新手上路
帖 子:223
专家分:0
注 册:2006-6-24
收藏
得分:0 
是第四版,图书馆借的
不过内容差不多
看第二遍才发现了,书读白遍其意自现啊
书上写道:
char * strncat(char * s1, const char * s2, size_t n);
s2字符串中前n歌字符被追加到s1的字符串,s2中的空字符及其后的任何字符都不
会被复制,并且追加一个空字符到所得结果后面.
自己看书太马虎了,谢谢了啊

在路上走,看见了C,从此爱上了她
2008-02-17 12:15
快速回复:对strncpy && strncat 有些不解,望赐教
数据加载中...
 
   



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

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