大家好,霖霖来为大家解答以上问题。c++涓殑strcpy鍑芥暟,C语言的strcpy和strncpy函数很多人还不知道,现在让我们一起来看看吧!
C语言的strcpy()和strncpy()函数
对于C语言来说,什么是strcpy()和strncpy()函数呢?这对于想要学习C语言的小伙伴来说,是必须要搞懂的事情,下面是小编为大家搜集整理出来的有关于C语言的strcpy()和strncpy()函数,一起看看吧!
strcpy()函数
strcpy() 函数用来复制字符串,其原型为:
char *strcpy(char *dest, const char *src);
【参数】dest 为目标字符串指针,src 为源字符串指针。
注意:src 和 dest 所指的内存区域不能重叠,且 dest 必须有足够的空间放置 src 所包含的字符串(包含结束符NULL)。
【返回值】成功执行后返回目标数组指针 dest。
strcpy() 把src所指的由NULL结束的字符串复制到dest 所指的数组中,返回指向 dest 字符串的起始地址。
注意:如果参数 dest 所指的内存空间不够大,可能会造成缓冲溢出(buffer Overflow)的错误情况,在编写程序时请特别留意,或者用strncpy()来取代。
示例:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687/* copy1.c -- strcpy() demo */
#include
#include
// declares strcpy()
#define SIZE
40
#define LIM
5
char
* s_gets(
char
* st,
int
n);
int
main(
void
)
{
char
qwords[LIM][SIZE];
char
temp[SIZE];
int
i =
0
;
printf(
"Enter %d words beginning with q:"
, LIM);
while
(i < LIM && s_gets(temp, SIZE))
{
if
(temp[
0
] !=
'q'
)
printf(
"%s doesn't begin with q!"
, temp);
else
{
strcpy(qwords[i], temp);
i++;
}
}
puts(
"Here are the words accepted:"
);
for
(i =
0
; i < LIM; i++)
puts(qwords[i]);
return
0
;
}
char
* s_gets(
char
* st,
int
n)
{
char
* ret_val;
int
i =
0
;
ret_val = fgets(st, n, stdin);
if
(ret_val)
{
while
(st[i] !=
''
&& st[i] !=
''
)
i++;
if
(st[i] ==
''
)
st[i] =
''
;
else
// must have words[i] == ''
while
(get) !=
''
)
continue
;
}
return
ret_val;
}
该程序要求用户输入以q开头的单词,该程序把输入拷贝至一个临时数组中,如果第一个字母是q,程序调用strcpy()把整个字符串从临时数组拷贝至目标数组中。strcpy()函数相当于字符串赋值运算符。
该程序的运行示例如下:
123456789101112131415161718192021222324252627Enter
5
words beginning with q:
quackery [用户输入]
quasar [用户输入]
quilt [用户输入]
quotient [用户输入]
no more [用户输入]
no more doesn't begin with q!
quiz [用户输入]
Here are the words accepted:
quackery
quasar
quilt
quotient
quiz
strcpy的其他属性:
strcpy()的返回类型是char *,该函数返回的是第1个参数的值,即一个字符的'地址 第一个参数不必指向数组的开始,这个属性可用于拷贝数组的一部分。 strcpy()把源字符串中的空字符也拷贝在内。
strncpy()函数
strncpy()用来复制字符串的前n个字符,其原型为:
char * strncpy(char *dest, const char *src, size_t n);
【参数说明】dest 为目标字符串指针,src 为源字符串指针。
strncpy()会将字符串src前n个字符拷贝到字符串dest。
不像strcpy(),strncpy()不会向dest追加结束标记’’,这就引发了很多不合常理的问题。
注意:src 和 dest 所指的内存区域不能重叠,且 dest 必须有足够的空间放置n个字符。
【返回值】返回字符串dest。
本文到此结束,希望对大家有所帮助。
免责声明:本文由用户上传,如有侵权请联系删除!