目录
作用:可以将一个数组的字符串拷贝到另外的一个数组里(注意:接收的那个数组要有足够的空间)
作用:字符串追加(连接)(注意:被追加的数组要有足够的空间)
作用:比较字符串的大小(比较的是相同位置上字母的大小)(strcmp( )内部要传指针变量,因为strcmp接收的是指针)
格式:strncat(ch1, ch2, int); —(int控制拷贝的字符的多少,ch1,ch2是字符数组)
作用:比较字符串的大小,同时可以控制比较多少个字符(比较的是相同位置上字母的大小)(strcmp( )内部要传指针变量,因为strcmp接收的是指针)
一、strcpy(长度不受限制)
需要引用头文件<string.h>
作用:可以将一个数组的字符串拷贝到另外的一个数组里(注意:接收的那个数组要有足够的空间)
代码段
#define _CRT_SECURE_NO_WARNINGS f
#include<stdio.h>
#include<string.h>
int main()
{
char ch1[20] = "xxxxxxxxxxxxxxxx";
char ch2[] = "hello";
strcpy(ch1, ch2);
printf("%s", ch1);
return 0;
}
结果展示
二、strcat(长度不受限制)
需要引用头文件<string.h>
作用:字符串追加(连接)(注意:被追加的数组要有足够的空间)
不能自己给自己追加,为什么?
\0会被改变,找不到字符串结束标志的\0
代码段
#define _CRT_SECURE_NO_WARNINGS f
#include<stdio.h>
#include<string.h>
int main()
{
char ch1[20] = "hello ";
char ch2[] = "world";
strcat(ch1, ch2);
printf("%s", ch1);
return 0;
}
运行结果
三、strcmp(长度不受限制)
需要引用头文件<string.h>
作用:比较字符串的大小(比较的是相同位置上字母的大小)(strcmp( )内部要传指针变量,因为strcmp接收的是指针)
例如: char* pa1 = "abcbd";
char* pa2 = "abq";
int ret = strcmp(pa1, pa2);//用int接收是因为string返回类型是int//pa1>pa2,返回-1,pa1<pa2,返回1,pa1 = pa2,返回0
代码段
#define _CRT_SECURE_NO_WARNINGS f
#include<stdio.h>
#include<string.h>
int main()
{
char* pa1 = "abcbd";
char* pa2 = "abq";
int ret = strcmp(pa1, pa2);
if (ret > 0)
{
printf("pa1 > pa2");
}
else if (ret < 0)
{
printf("pa1 < pa2");
}
else
{
printf("pa1 = pa2");
}
}
运行结果
四、strncpy(长度受到限制)
需要引用头文件<string.h>
作用:可以拷贝字符串,同时可以控制拷贝的长度
格式:strncpy(ch1, ch2, int); —(int控制拷贝的字符的多少,ch1,ch2是字符数组)
代码段
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
int main()
{
char ch1[20] = "abcdef";
char ch2[] = "ghijkl";
strncpy(ch1, ch2, 2);
printf("%s", ch1);
return 0;
}
运行结果
五、strncat(长度受到限制)
需要引用头文件<string.h>
作用:可以追加字符串,同时可以控制追加的长度
格式:strncat(ch1, ch2, int); —(int控制拷贝的字符的多少,ch1,ch2是字符数组)
代码段
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
int main()
{
char ch1[20] = "abcdef";
char ch2[] = "ghijkl";
strncat(ch1, ch2, 2);
printf("%s", ch1);
return 0;
}
运行结果
六、strncmp(长度受到限制)
需要引用头文件<string.h>
作用:比较字符串的大小,同时可以控制比较多少个字符(比较的是相同位置上字母的大小)(strcmp( )内部要传指针变量,因为strcmp接收的是指针)
例如: char* pa1 = "abcbd";
char* pa2 = "abq";
int ret = strcmp(pa1, pa2, int);//用int接收是因为string返回类型是int//pa1>pa2,返回-1,pa1<pa2,返回1,pa1 = pa2,返回0
代码段
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
int main()
{
char* p1 = "abcdef";
char* p2 = "abeabc";
int ret = strncmp(p1, p2, 2);
int sum = strncmp(p1, p2, 4);
printf("%d\n", ret);
printf("%d\n", sum);
return 0;
}
运行结果
七、strstr(长度不受限制)
需要引用头文件<string.h>
作用:在一个字符串中查找另一个字符串
例如: char ch1[] = "abcdef";
char ch2[] = "bcd";
char* ret = strstr(ch1, ch2);(strstr返回的类型是char*)
代码段
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
int main()
{
char ch1[] = "abcdef";
char ch2[] = "bcd";
char* ret = strstr(ch1, ch2);
//在ch1中查找是否包含ch2
if (ret == NULL)
{
printf("没找到\n");
}
else
{
printf("%s\n", ret);
}
}
运行结果
八、strtok
需要引用头文件<string.h>
作用:切割字符串
例如:
char ch1[20] = "abc#def@ghj$jkl";
char* p = "#@$";//遇到这些字符时就会切割,就是将其转化为'\0',这些字符是自己定义的
char tmp[20] = "0";
char* ret = NULL;
strcpy(tmp, ch1);//保护ch1不被改变ret = strtok(tmp, p);
printf("%s\n", ret);
ret = strtok(NULL, p);//NULL就是从上个切割字符被转化的'\0'开始继续找下一个切割的字 符
printf("%s\n", ret);
ret = strtok(NULL, p);
printf("%s\n", ret);
代码段
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
int main()
{
char ch1[20] = "abc#def@ghj$jkl";
char* p = "#@$";//遇到这些字符时就会切割,就是将其转化为'\0',这些字符是自己定义的
char tmp[20] = "0";
char* ret = NULL;
strcpy(tmp, ch1);//保护ch1不被改变
ret = strtok(tmp, p);
printf("%s\n", ret);
ret = strtok(NULL, p);//NULL就是从上个切割字符被转化的'\0'开始继续找下一个切割的字符
printf("%s\n", ret);
ret = strtok(NULL, p);
printf("%s\n", ret);
return 0;
}
运行结果
九、strerror
需要引用头文件<string.h> <errno.h>
作用:查看错误的信息
例如: FILE* pf = fopen("test.txt","r");//查找test.txt这个文件
if (pf == NULL)//如果找不到
{
printf("%s\n", strerror(errno));//打印错误的信息
return 1;
}
fclose(pf);
pf = NULL;return 0;
代码段
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
#include<errno.h>
int main()
{
FILE* pf = fopen("test.txt","r");//查找test.txt这个文件
if (pf == NULL)//如果找不到
{
printf("%s\n", strerror(errno));//打印错误的信息
return 1;
}
fclose(pf);
pf = NULL;
return 0;
}
运行结果
十、perror(扩展)
作用:查看错误信息(比strerror更加方便)
格式:perror("输入你想要查看的操作")
例如:
FILE* pf = fopen("test.txt","r");//查找test.txt这个文件
if (pf == NULL)//如果找不到
{
//printf("%s\n", strerror(errno));//打印错误的信息
perror("fopen");
return 1;
}
fclose(pf);
pf = NULL;return 0;
代码段
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
#include<errno.h>
int main()
{
FILE* pf = fopen("test.txt","r");//查找test.txt这个文件
if (pf == NULL)//如果找不到
{
//printf("%s\n", strerror(errno));//打印错误的信息
perror("fopen");
return 1;
}
fclose(pf);
pf = NULL;
return 0;
}
运行结果