为了账号安全,请及时绑定邮箱和手机立即绑定

strcpy函数

如果s1长度为100,s2长度为20,那么strcpy(s1,s2)长度为多少

正在回答

6 回答

strcpy(char *dest, const char *src)

这个函数把src字符串中的字符(包括结尾的'\0')拷贝到dest所指的内存中。

要注意的是:要拷贝到s2中的'\0'字符才会停止,所以如果dest容纳不了这么多的字符,那么dest中的字符串可能不是'\0'结尾。

例子:

char s2[20]; // 假设里面有19个字符(结尾是一个'\0')
char s1[100];
srtcpy(s1, s2);

现在s1的前20个字符就是s2中的19个字符和结尾的一个'\0'。而s1中剩余部分中的原有内容不会改变。

0 回复 有任何疑惑可以回复我~
#1

Dream丶OP 提问者

剩余内容是空格呢
2015-01-26 回复 有任何疑惑可以回复我~
#2

onemoo 回复 Dream丶OP 提问者

你是指s1中剩余的是空格吗?strcpy函数只是从s2中的第一个字符开始复制,直到'\0'结束复制。将这些字符(包括'\0')放入s1所指的位置(这里s1是字符数组),strcpy完全不管s1后面是什么,也不会改变它们。 所以在这个例子中,s1中从第21个到第100个字符不会有变化。 但是请注意:这时strlen(s1)会得到19,因为字符串永远是将'\0'判断为结尾的。所以s1作为一个数组,它含有100个字符。但作为一个字符串,它只含有19个字符。
2015-01-27 回复 有任何疑惑可以回复我~
#3

Dream丶OP 提问者

非常感谢!
2015-01-29 回复 有任何疑惑可以回复我~

楼上说的时错的 strcpy是拷贝函数 将2字符复制给1 s1中剩余内容全都除去

1 回复 有任何疑惑可以回复我~

前边比后边的字符串大(s1 > s2)不用想, 长度为s2的长度(字符型一直到s2中得\0结束)  

0 回复 有任何疑惑可以回复我~

如果是 char s1[100]=""; char s2[20]="";这样的话strcpy(s1,s2)之后,s1的长度为0

如果是s2中有内容的话,那么就是以s2的长度为准

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C语言入门
  • 参与学习       926019    人
  • 解答问题       20793    个

C语言入门视频教程,带你进入编程世界的必修课-C语言

进入课程

strcpy函数

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信