免费学习网考试资料计算机类内容页

C语言的strcpy()和strncpy()函数

2021-05-08 20:55:01 计算机类

  C语言的strcpy和strncpy函数

  对于C语言来说,什么是strcpy和strncpy函数呢?这对于想要学习C语言的小伙伴来说,是必须要搞懂的事情,下面是小编为大家搜集整理出来的有关于C语言的strcpy和strncpy函数,一起看看吧!

  strcpy函数

  strcpy 函数用来复制字符串,其原型为:

  char *strcpychar *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 5char * s_getschar * st, int n;int mainvoidchar qwords[LIM][SIZE];char temp[SIZE];int i = 0;printf"Enter %d words beginning with q:", LIM;while i < LIM && s_getstemp, SIZEif temp[0] != 'q'printf"%s doesn't begin with q!", temp;elsestrcpyqwords[i], temp;i++;puts"Here are the words accepted:";for i = 0; i < LIM; i++putsqwords[i];return 0;char * s_getschar * st, int nchar * ret_val;int i = 0;ret_val = fgetsst, n, stdin;if ret_valwhile st[i] != '' && st[i] != '\0'i++;if st[i] == ''st[i] = '\0';else // must have words[i] == '\0'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:quackeryquasarquiltquotientquiz

  strcpy的其他属性:

  strcpy的返回类型是char *,该函数返回的是第1个参数的值,即一个字符的地址 第一个参数不必指向数组的开始,这个属性可用于拷贝数组的一部分。 strcpy把源字符串中的空字符也拷贝在内。

  strncpy函数

  strncpy用来复制字符串的前n个字符,其原型为:

  char * strncpychar *dest, const char *src, size_t n;

  【参数说明】dest 为目标字符串指针,src 为源字符串指针。

  strncpy会将字符串src前n个字符拷贝到字符串dest。

  不像strcpy,strncpy不会向dest追加结束标记’\0’,这就引发了很多不合常理的问题。

  注意:src 和 dest 所指的内存区域不能重叠,且 dest 必须有足够的空间放置n个字符。

  【返回值】返回字符串dest。

猜你可能喜欢