如何区分使用strcpy和memset修改字符串的适用场景?

更新于
2026-10-10 04:32:32
1阅读来源:SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计160个文字,预计阅读时间需要1分钟。

如何区分使用strcpy和memset修改字符串的适用场景?

c// 原始代码void strcpy(char *dest, const char *src) { while ((*dest++=*src++));}

// 简化代码void simplified_strcpy(char *dest, const char *src) { while (*dest++=*src++);}

1.strcpy全部替换原字符串

如何区分使用strcpy和memset修改字符串的适用场景?

#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<string.h> int main() { char arr1[] = "hello world"; char arr2[] = "##################"; //用arr1替换arr2 strcpy(arr2, arr1); printf("%s", arr2); return 0; }

strcpy在替换时会携带/0,把arr2变为hello world/0######

printf在打印字符串时读取到/0为止,所以只会打印hello world。

2.memset部分替换原字符串

memory set 即内存设置

#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<string.h> int main() { char arr1[] = "hello world"; memset(arr1, '#', 5); printf("%s", arr1); return 0; }

memset仅仅把前五项替换为#,不会携带/0,所以打印结果为##### world


本文共计160个文字,预计阅读时间需要1分钟。

如何区分使用strcpy和memset修改字符串的适用场景?

c// 原始代码void strcpy(char *dest, const char *src) { while ((*dest++=*src++));}

// 简化代码void simplified_strcpy(char *dest, const char *src) { while (*dest++=*src++);}

1.strcpy全部替换原字符串

如何区分使用strcpy和memset修改字符串的适用场景?

#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<string.h> int main() { char arr1[] = "hello world"; char arr2[] = "##################"; //用arr1替换arr2 strcpy(arr2, arr1); printf("%s", arr2); return 0; }

strcpy在替换时会携带/0,把arr2变为hello world/0######

printf在打印字符串时读取到/0为止,所以只会打印hello world。

2.memset部分替换原字符串

memory set 即内存设置

#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<string.h> int main() { char arr1[] = "hello world"; memset(arr1, '#', 5); printf("%s", arr1); return 0; }

memset仅仅把前五项替换为#,不会携带/0,所以打印结果为##### world