指针操作字符串:
指针指向字符串的某一个字符,移动指针多少位置,指针就更新指向对应位置的字符串。
char* sub[2] = { 0 };
char* p1 = (char*)malloc(8);
strcpy(p1, "dafveasd");
int len = strlen(p1);
p1 = p1 + len - 1; //这时候p1移动了len-1的位置,就指向了末尾
p1[1] = '\0'; //p[0]是最后一个字符位置,p[1]自然就是字符后面的'\0'
sub[0] = p1; //sub[0]中也要存一个char*,存p1,取值时就是取到'\0'结束
以上代码,利用指针的位移,指针到数组的转换来操作字符串。感觉一系列操作相当巧妙。
字符串的赋值
char* a1 = "refwvtrtb";这种串赋值永远是常量,a1是不能被改变的。
'='和strcpy,memcpy赋值的区别
=对于字符串的操作,永远是浅拷贝,可以利用=赋值之后的字符串操作原字符串。
strcpy和memcpy均是深拷贝。它俩的区别是strcpy只拷贝字符串,memcpy都可以拷贝。用这俩个个深拷贝之后,源字符串和拷贝后的字符串操作就互不影响了。
字符串操作函数记录
函数名: strcpy
功 能: 将参数src字符串拷贝至参数dest所指的地址
用 法: char *strcpy(char *dest, const char *src);
函数名: strncpy
功 能: 将字符串src前n个字符拷贝到字符串dest
用 法: char *strncpy(char *dest, const char *src, size_t n);
函数名: strcat
功 能: 字符串拼接函数
用 法: char *strcat(char *dest, const char *src);
函数名: strncat
功 能: 将n个字符追加到字符串的结尾
用 法: char *strncat(char *dest, const char *src, size_t n);
函数名: strcmp
功 能: 字符串比较
用 法: int strcmp(const char *s1, const char *s2);
注意:strcasecmp
函数名: strncmp
功 能: 比较 s1 和 s2 前n个字符的大小,比较的是字符ASCII码大小。
用 法: int strncmp(const char *s1, const char *s2, size_tn);
函数名: strchr
功 能: 在一个字符串中查找给定字符的第一个匹配之处
用 法: char *strchr(const char *str, int c);
注意:_tcschr
函数名: strpbrk
功 能: 返回两个字符串中首个相同字符的位置
用 法: char *strpbrk(char *s1, char *s2);
函数名: sprintf
功 能: 根据参数format字符串来转换并格式化数据,然后将结果输出到str指定的空间中,
直到出现字符串结束符 '\0' 为止。
用 法: int sprintf(char *str , const char *format, ...);
函数名: sscanf
功 能: 从str指定的字符串读取数据,并根据参数format字符串来转换并格式化数据。
用 法: int sscanf(const char *str, const char *format, ...);
函数名: strtok
功 能: 根据分界符将字符串分割成一个个片段
用 法: char *strtok(char *s, const char *delim);
函数名: strstr
功 能: 检索子串在字符串中首次出现的位置
用 法: char *strstr( char *str, char * substr );