memcpy
C 库函数 void *memcpy(void *str1, const void *str2, size_t n) 从存储区 str2 复制 n 个字节到存储区 str1。
在线编译工具:link.
https://c.runoob.com/compile/11/
#include <stdio.h>
#include <string.h>
int main ()
{
char src[50] = "1234567890";
char *s="123456";
char dest[50]= "abcdefghijklmnopqrst";
char dest2[50]= "ABCDEFghijklmnopqrst";
memcpy(dest, src, 3); //从dest第一个字符开始替换为src的前3个字符
printf("dest = %s\n", dest);
memcpy(&dest2[2], src, 3); //从dest的dest[2],第三个字符开始替换为src的前3个字符
printf("dest2 = %s\n", dest2);
memcpy(dest, &src[7], 3); //从dest第一个字符开始替换为src的src[7]开始的连续后3个字符
printf("dest = %s\n", dest);
memcpy(&dest2[6], s+2, 3);
printf("dest2 = %s\n", dest2);
return(0);
}
字符串内容比较
strcmp
strcmp是C语言比较字符串的库函数,形式为int strcmp(char *a, char *b);
该函数会对a和b的每个字符,按照ascii码值比较,如果二者完全相同返回0;如果a的ascii码值先出现较大者,会返回1;否则返回-1。
strstr()
C 库函数 char *strstr(const char *haystack, const char *needle) 在字符串 haystack 中查找第一次出现字符串 needle 的位置,不包含终止符 ‘\0’。
#include <stdio.h>
#include <string.h>
int main()
{
const char haystack[20] = "RUNOOB";
const char needle[10] = "NOOB";
char *ret;
ret = strstr(haystack, needle);
printf("子字符串是: %s\n", ret);
return(0);
}
产生以下结果:
子字符串是: NOOB
memset函数详解(给字符串赋指定值,数组清空用)
memset(首地址,值,sizeof(地址总大小));
memset(a,0,sizeof(a));
重点
memset以字节为单位进行初始化,这句话是什么意思呢?就是说它进行初始化时并不关心你要初始化的数组是什么类型的,它均以字节为单位进行初始化。
比如你的数组是int型的。int为4字节。但是memset以字节进行初始化
memset(a,1,sizeof(a));
在a中每个元素占 4字节
比如int型的0为 0x00000000
int 型的最大值为 0x7FFFFFFF
0xF = 0b1111 占四位
1字节为8bit ,所以两位为1字节
使用memset进行初始化后会变为 0x01010101 也就是16843009
所以一下两种初始化效果是一样的
memset(a,-1,sizeof(a));
memset(a,255,sizeof(a));
sprintf()
C 库函数 int sprintf(char *str, const char *format, …) 发送格式化输出到 str 所指向的字符串。
#include <stdio.h>
#include <math.h>
int main()
{
char str[80];
sprintf(str, "Pi 的值 = %f", M_PI);
puts(str);
return(0);
}
puts()
puts() 输出更简洁、更方便。而且使用 puts() 函数连换行符 ‘\n’ 都省了,使用 puts() 显示字符串时,系统会自动在其后添加一个换行符,
printf("%s\n", name);
和
puts(name);
等价
printf("输出结果是:%s\n", str);
puts(输出结果是:str);
# include <stdio.h>
int main(void)
{
char name[] = "祖国!";
printf("%s\n", name); //用printf输出
puts(name); //用puts()输出
puts("我爱你!"); //直接输出字符串
return 0;
}
输出结果是:
祖国!祖国!我爱你!