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

阅读: 评论:0

2024年2月5日发(作者:)

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

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()来取代。

示例:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

/* copy1.c -- strcpy() demo */

#include

#include // declares strcpy()

#define SIZE 40

#define LIM 5

char * s_gets(char * st, int n);

int main(void)

{

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

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;

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

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()函数相当于字符串赋值运算符。

该程序的运行示例如下:

1

2

3

4

5

6

7

8

9

10

Enter 5 words beginning with q:

quackery [用户输入]

quasar [用户输入]

quilt [用户输入]

quotient [用户输入]

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

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。

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

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

本文发布于:2024-02-05 15:31:04,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170711826457354.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

上一篇:strcpy的用法
标签:字符串   数组   程序   所指   输入   拷贝   用户
留言与评论(共有 0 条评论)
   
验证码:
排行榜

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23