文章目录 1、strcat描述声明参数返回值实例 2、strncat描述声明参数返回值实例 3、strcmp描述声明参数返回值实例 4、strcpy描述声明参数返回值实例 5、strncpy描述声明参数返回值实例 6、strncpy_s7、memcpy描述声明参数返回值实例
1、strcat
C 标准库 - <string.h>
描述C 库函数 char *strcat(char *dest, const char *src) 把 src 所指向的字符串追加到 dest 所指向的字符串的结尾。
声明下面是 strcat() 函数的声明。
char *strcat(char *dest, const char *src) 参数dest – 指向目标数组,该数组包含了一个 C 字符串,且足够容纳追加后的字符串。
src – 指向要追加的字符串,该字符串不会覆盖目标字符串。
该函数返回一个指向最终的目标字符串 dest 的指针。
实例下面的实例演示了 strcat() 函数的用法。
#include <stdio.h>#include <string.h> int main () { char src[50], dest[50]; strcpy(src, "This is source"); strcpy(dest, "This is destination"); strcat(dest, src); printf("最终的目标字符串: |%s|", dest); return(0);}让我们编译并运行上面的程序,这将产生以下结果:
最终的目标字符串: |This is destinationThis is source|
C 标准库 - <string.h>
描述C 库函数 char *strncat(char *dest, const char *src, size_t n) 把 src 所指向的字符串追加到 dest 所指向的字符串的结尾,直到 n 字符长度为止。
声明下面是 strncat() 函数的声明。
char *strncat(char *dest, const char *src, size_t n) 参数dest – 指向目标数组,该数组包含了一个 C 字符串,且足够容纳追加后的字符串,包括额外的空字符。
src – 要追加的字符串。
n – 要追加的最大字符数。
该函数返回一个指向最终的目标字符串 dest 的指针。
实例下面的实例演示了 strncat() 函数的用法。
#include <stdio.h>#include <string.h>int main () { char src[50], dest[50]; strcpy(src, "This is source"); strcpy(dest, "This is destination"); strncat(dest, src, 15); printf("最终的目标字符串: |%s|", dest); return(0);}让我们编译并运行上面的程序,这将产生以下结果:
最终的目标字符串: |This is destinationThis is source|
C 标准库 - <string.h>
描述C 库函数 int strcmp(const char *str1, const char *str2) 把 str1 所指向的字符串和 str2 所指向的字符串进行比较。
声明下面是 strcmp() 函数的声明。
int strcmp(const char *str1, const char *str2) 参数str1 – 要进行比较的第一个字符串。
str2 – 要进行比较的第二个字符串。
该函数返回值如下:
如果返回值小于 0,则表示 str1 小于 str2。如果返回值大于 0,则表示 str1 大于 str2。如果返回值等于 0,则表示 str1 等于 str2。 实例下面的实例演示了 strcmp() 函数的用法。
#include <stdio.h>#include <string.h> int main () { char str1[15]; char str2[15]; int ret; strcpy(str1, "abcdef"); strcpy(str2, "ABCDEF"); ret = strcmp(str1, str2); if(ret < 0) { printf("str1 小于 str2"); } else if(ret > 0) { printf("str1 大于 str2"); } else { printf("str1 等于 str2"); } return(0);}让我们编译并运行上面的程序,这将产生以下结果:str1 大于 str2
4、strcpyC 标准库 - <string.h>
描述C 库函数 char *strcpy(char *dest, const char *src) 把 src 所指向的字符串复制到 dest。
需要注意的是如果目标数组 dest 不够大,而源字符串的长度又太长,可能会造成缓冲溢出的情况。strcpy函数会导致内存溢出。strcpy拷贝函数不安全,他不做任何的检查措施,也不判断拷贝大小,不判断目的地址内存是否够用。
声明下面是 strcpy() 函数的声明。
char *strcpy(char *dest, const char *src) 参数dest – 指向用于存储复制内容的目标数组。
src – 要复制的字符串。
该函数返回一个指向最终的目标字符串 dest 的指针。
实例 #include <stdio.h>#include <string.h> int main() { char src[40]; char dest[100]; memset(dest, ' ', sizeof(dest)); strcpy(src, "This is runoob.com"); strcpy(dest, src); printf("最终的目标字符串: %sn", dest); return(0);}让我们编译并运行上面的程序,这将产生以下结果:
最终的目标字符串: This is runoob.com
strncpy拷贝函数,虽然计算了复制的大小,但是也不安全,没有检查目标的边界。
C 标准库 - <string.h>
描述C 库函数 char *strncpy(char *dest, const char *src, size_t n) 把 src 所指向的字符串复制到 dest,最多复制 n 个字符。当 src 的长度小于 n 时,dest 的剩余部分将用空字节填充。
声明下面是 strncpy() 函数的声明。
char *strncpy(char *dest, const char *src, size_t n) 参数dest – 指向用于存储复制内容的目标数组。
src – 要复制的字符串。
n – 要从源中复制的字符数。
该函数返回最终复制的字符串。
实例下面的实例演示了 strncpy() 函数的用法。在这里,我们使用函数 memset() 来清除内存位置。
#include <stdio.h>#include <string.h> int main() { char src[40]; char dest[12]; memset(dest, ' ', sizeof(dest)); strcpy(src, "This is runoob.com"); strncpy(dest, src, 10); printf("最终的目标字符串: %sn", dest); return(0);}让我们编译并运行上面的程序,这将产生以下结果:
最终的目标字符串: This is ru
目前,strncpy是字符串拷贝推荐的用法
加_s版本则是从VS2005开始推出的安全版本,
而加_s版本之所以安全,是因为他们在接口增加了一个参数numElems来表明dest中的字节数,
防止目标指针dest中的空间不够而导致出现Bug,同时返回值改成返回错误代码,而不是为了一些所谓的方便而返回char*。这样接口的定义就比原来安全很多。
但是,_s版本并不是标准库,所以,不推荐使用
7、memcpymemcpy拷贝函数,它与strcpy的区别就是memcpy可以拷贝任意类型的数据,strcpy只能拷贝字符串类型。
C 标准库 - <string.h>
描述C 库函数 void *memcpy(void *str1, const void *str2, size_t n) 从存储区 str2 复制 n 个字节到存储区 str1。
声明下面是 memcpy() 函数的声明。
void *memcpy(void *str1, const void *str2, size_t n) 参数str1 – 指向用于存储复制内容的目标数组,类型强制转换为 void* 指针。
str2 – 指向要复制的数据源,类型强制转换为 void* 指针。
n – 要被复制的字节数。
该函数返回一个指向目标存储区 str1 的指针。
实例 // 将字符串复制到数组 dest 中#include <stdio.h>#include <string.h>int main () { const char src[50] = "http://www.runoob.com"; char dest[50]; memcpy(dest, src, strlen(src)+1); printf("dest = %sn", dest); return(0);}让我们编译并运行上面的程序,这将产生以下结果:dest = http://www.runoob.com
一分快三技巧准确率100 描述C 库函数 char *strncpy(char *dest, const char *src, size_t n) 把 src 所指向的字符串复制到 dest,最多复制 n 个字符。当 src 的长度小于 n 时,dest 的剩余部分将用空字节填充。
声明下面是 strncpy() 函数的声明。
char *strncpy(char *dest, const char *src, size_t n) 参数dest – 指向用于存储复制内容的目标数组。
src – 要复制的字符串。
n – 要从源中复制的字符数。
该函数返回最终复制的字符串。
实例下面的实例演示了 strncpy() 函数的用法。在这里,我们使用函数 memset() 来清除内存位置。
#include <stdio.h>#include <string.h> int main() { char src[40]; char dest[12]; memset(dest, ' ', sizeof(dest)); strcpy(src, "This is runoob.com"); strncpy(dest, src, 10); printf("最终的目标字符串: %sn", dest); return(0);}让我们编译并运行上面的程序,这将产生以下结果:
最终的目标字符串: This is ru
目前,strncpy是字符串拷贝推荐的用法
加_s版本则是从VS2005开始推出的安全版本,
而加_s版本之所以安全,是因为他们在接口增加了一个参数numElems来表明dest中的字节数,
防止目标指针dest中的空间不够而导致出现Bug,同时返回值改成返回错误代码,而不是为了一些所谓的方便而返回char*。这样接口的定义就比原来安全很多。
但是,_s版本并不是标准库,所以,不推荐使用
7、memcpymemcpy拷贝函数,它与strcpy的区别就是memcpy可以拷贝任意类型的数据,strcpy只能拷贝字符串类型。
C 标准库 - <string.h>
描述C 库函数 void *memcpy(void *str1, const void *str2, size_t n) 从存储区 str2 复制 n 个字节到存储区 str1。
声明下面是 memcpy() 函数的声明。
void *memcpy(void *str1, const void *str2, size_t n) 参数str1 – 指向用于存储复制内容的目标数组,类型强制转换为 void* 指针。
str2 – 指向要复制的数据源,类型强制转换为 void* 指针。
n – 要被复制的字节数。
该函数返回一个指向目标存储区 str1 的指针。
实例 // 将字符串复制到数组 dest 中#include <stdio.h>#include <string.h>int main () { const char src[50] = "http://www.runoob.com"; char dest[50]; memcpy(dest, src, strlen(src)+1); printf("dest = %sn", dest); return(0);}让我们编译并运行上面的程序,这将产生以下结果:dest = http://www.runoob.com