字符串常用API
- 头文件
- 2
- 2.1puts(输出)
- 2.1.1函数原型
- 2.1.2例子
- 2.1.3附加说明
- 2.2 野指针介绍
- 2.2.1例子
- 2.3 gets(输入)
- 2.3.1函数原型
- 2.3.2例子
- 2.4 strlen(计算长度)
- 2.4.1函数原型
- 2.4.2例子
- 2.4 strcpy(字符串拷贝一)
- 2.5.1 函数原型
- 2.5.1 例子
- 2.5 strncpy(字符串拷贝二)
- 2.5.1 函数原型
- 2.5.2 例子
- 2.6 strcat(字符串拼接)
- 2.6.1 函数原型
- 2.6.1 例子
- 2.7 strcmp(字符串比较)
- 2.7.1 函数原型
- 2.7.2 例子
- 2.8 strchr(查找字符)
- 2.8.1 函数原型
- 2.8.2 例子
- 2.9 strstr(查找子字符串)
- 2.9.1 函数介绍
- 2.9.2 例子
- 2.10 strlwr(大写转小写)
- 2.10.1 函数介绍
- 2.10.2 例子
- 2.10 strupr(小写转大写)
- 2.11 strtok(字符串的切割)
- 2.11.1 函数介绍
- 2.11.2 例子
头文件
#include<string.h>
2
2.1puts(输出)
2.1.1函数原型
int puts(const char *s);
2.1.2例子
#include <stdio.h>
#include <string.h>
int main()
{
char *str = "NuoMiNuoMi QiangDeYiPi!";
puts(str);
printf("%s\n",str);
return 0;
}
运行结果
2.1.3附加说明
上面例子可以看出puts函数输出的字符串会自动加一个换行。
2.2 野指针介绍
2.2.1例子
#include <stdio.h>
#include <string.h>
int main()
{
char *str = NULL;
printf("请输入字符串:");
scanf("%s",str);
puts(str);
return 0;
}
运行上面代码结果,出现段错误:
原因:代码中str雀食是一个野指针(给NULL了还是野指针,不给更是野指针)啊,不能对其进行操作,再说一次,不能对野指针进行操作,需要给其开辟空间后才可以,在代码中加上:
str = (char *)malloc(128);//malloc有时可能会失败,失败时候返回值为NULL,可自行判断
或者加上
memset(str,'\0',128);
解决问题,运行结果为
2.3 gets(输入)
2.3.1函数原型
char *gets(char *s);
2.3.2例子
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
char *str;
str = (char *)malloc(128);
printf("请输入字符串:\n");
gets(str);
puts(str);
return 0;
}
运行结果
2.4 strlen(计算长度)
2.4.1函数原型
size_t strlen(const char *s);
2.4.2例子
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
char *str = "NuoMiNuoMi QiangDeYiPi!";
int len = strlen(str);
printf("字符串的长度为:%d\n",len);
return 0;
}
运行结果:
附加说明:strlen函数不会将字符串结束符‘\0’算入长度,但sizeof会将字符串的结束符‘\0’算入。
2.4 strcpy(字符串拷贝一)
2.5.1 函数原型
char *strcpy(char *dest, const char *src);
2.5.1 例子
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
char str1[128] = {'\0'};
char *str2 = "糯米糯米强的一批";
strcpy(str1,str2);
printf("将字符串2复制给字符串1的结果为:\n");
puts(str1);
return 0;
}
2.5 strncpy(字符串拷贝二)
2.5.1 函数原型
char *strncpy(char *dest, const char *src, size_t n);
2.5.2 例子
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
char str1[128] = {'\0'};
char *str2 = "糯米糯米强的一批";
strncpy(str1,str2,13);
printf("将字符串2复制给字符串1的结果为:\n");
puts(str1);
return 0;
}
运行结果
2.6 strcat(字符串拼接)
2.6.1 函数原型
char *strcat(char *dest, const char *src);
2.6.1 例子
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
char str1[128] = "糯米糯米";
char *str2 = "强的一批";
strcat(str1,str2);
printf("将字符串1和字符串2拼接结果为:\n");
puts(str1);
return 0;
}
运行结果
2.7 strcmp(字符串比较)
2.7.1 函数原型
int strcmp(const char *s1, const char *s2);
返回值: s1和s2相等返回0
s1小于s2返回-1
s1大于s2返回
2.7.2 例子
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
char str1[128] = "123";
char *str2 = "123";
int ret = strcmp(str1,str2);
printf("ret = %d\n",ret);
if(ret == 0){
printf("俩字符串相等\n");
}
return 0;
}
运行结果:
2.8 strchr(查找字符)
2.8.1 函数原型
char *strchr(const char *str, char c)
在参数str所指向的字符串中搜索第一次出现字符c(一个无符号字符)的位置。
参数:
str-- 要被检索的 C 字符串。
c-- 在 str 中要搜索的字符。
2.8.2 例子
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
char *str = "nuominuomiqiangdeyipi";
char c = 'q';
char *p;
p = strchr(str,c);
if(p == NULL){
printf("没有找到\n");
}else{
printf("找到了\n");
puts(p);
}
return 0;
}
2.9 strstr(查找子字符串)
2.9.1 函数介绍
strstr()函数用来检索子串在字符串中首次出现的位置,其原型为:
char *strstr( char *str, char * substr );
函数参数:
str参数为要检索的字符串,
substr参数为要检索的子串。
函数返回值:
返回字符串str中第一次出现子串substr的地址;如果没有检索到子串,则返回NULL。
2.9.2 例子
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
char *str = "nuominuomiqiangdeyipi";
char *substr = "deyi";
char *p = NULL;
p = strstr(str,substr);
if(p == NULL){
printf("没有找到\n");
}else{
printf("找到了\n");
puts(p);
}
return 0;
}
运行结果
2.10 strlwr(大写转小写)
2.10.1 函数介绍
函数原型
char *strlwr(char *s);
功能:将字符串s参数转换为小写形式
2.10.2 例子
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
char str[] = "NuoMiNuoMi";
strlwr(str);
puts(str);
system("pause");
return 0;
}
注意:这个函数在定义str时,在windows下要定义成数组形态,否则崩溃。
运行结果
2.10 strupr(小写转大写)
跟strlwr类似。。
2.11 strtok(字符串的切割)
2.11.1 函数介绍
char *strtok(char *str, const char *delim)
参数:
str – 要被分解成一组小字符串的字符串。
delim – 包含分隔符的 C 字符串。
返回值
该函数返回被分解的第一个子字符串,如果没有可检索的字符串,则返回一个空指针。
2.11.2 例子
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
char str[128] = "Qiang,de,yi,pi";
char *p;
int i=1;
char s[28]= ",";
p = strtok(str,s);
printf("获取到第一个字符串为:%s\n",p);
while(1){
i++;
p = strtok(NULL,",");
if(p != NULL){
printf("获取到第%d个字符串:%s\n",i,p);
}else{
printf("没有子串了\n");
break;
}
}
return 0;
}
注意第一次查找的时候要被分割的字符串为原字符串,后面被分割的字符串为NULL。
运行结果