字符串处理函数用法:strnlen_s,strcpy_s,strcat_s,strcmp,scanf_s

字符串处理函数,必须对头文件string,h执行include处理
1,计算字符串长度函数,不包括\0,注意它和sizeof()的不同,sizeof()计算数组长度,不但包括\0,而且是数组总长度,strnlen_s计算数组中字符的个数,不包括\0.
strnlen_s(计算字符数组的首地址,计算字符数组的长度),
返回值:一,若地址是NULL,返回值是0,二地址是其他,返回值是字符串中的字符数,不包括\0。
特殊情况:如
char a[]=“sfsdgdfgdf”;
strnlen_s(a,3)=3;也就是后面数组大小在需要计算的字符串的\0还要小,返回第二个参数值。
2,复制字符串函数:
strcpy_s和strncpy_s;
strcpy_s(目标字符串,指定目标字符串大小,需要被复制的字符串)
strncpt_s(目标字符串,指定目标字符串大小,需要被复制的字符串,需要复制的字符个数)
返回值:复制成功,返回0,因为被复制的字符串太大(比目标字符串大而不能完成复制,返回非0)
strcpy_s用法:
char b[]=“sfsdgsd”;
char a[30];
strcpy_s(a,sizeof(a),b);
printf("%s\n", a);
运行结果:
sfsdgsd
strncpt_s用法:
char b[]=“sfsdgsd”;
char a[30];
strncpy_s(a,sizeof(a),b,2);
printf("%s\n", a);
运行结果:
sf
特殊情况:
char b[]=“sfsd\0gsd”;
char a[30];
strcpy_s(a,sizeof(a),b);
printf("%s\n", a);
运行结果:
sfsd
也就是说被复制的字符串中有\0,就复制到此,即使目标函数有很大的空间
3,字符串连接函数strcat_s和strncat_s
strcat_s(连接到的字符串首地址,第一个字符串大小,连接的字符串地址)
strncpy_s(连接到的字符串首地址,第一个字符串大小,连接的字符串地址,需要连接的最大字符数)
注意:后来的字符串会覆盖前一个字符串的\0,且注意连接后有空间保存\0。
返回值:成功返回值是0,连接不成功(比如第一个字符串太小,乘不开两个字符串),返回值非0;
strcpy_s用法:
char b[50] = “to be,or not to be”;
char a[]=" that is the question";
strcat_s(b, sizeof(b), a);
printf("%s\n", b);
运行结果:
to be,or not to be that is the question
strncpy_s用法:
char b[50] = “to be,or not to be”;
char a[]=" that is the question";
strncat_s(b, sizeof(b), a,5);
printf("%s\n", b);
运行结果:
to be,or not to be that
特殊情况:
char b[50] = “to be,or not to be”;
char a[]=" that is the question";
strncat_s(b, 3, a,5);
printf("%s\n", b);
运行结果:
失败,也就是说被连接的字符大小太小,不足以称开复制后的字符串,返回值非0,程序崩溃
4,比较字符串函数:strcmp()和strncmp()
strcmp(第一个字符串,第二个字符串)
strncmp(第一个字符串,达尔戈字符串,前n个字符)
返回值:根据第一个字符串大于,等于,小于第二个字符串,返回值是小于0,等于0,大于0的数。
strcmp()用法:
char a[] = “the quick brown fox”;
char b[] = “the quick black fox”;
if (strcmp(a, b) > 0)
printf(""%s"比"%s"要%s\n", a,b, strcmp(a, b) > 0?“大”:“小”);
运行结果:
“the quick brown fox"比"the quick black fox"要大
strcnmp()用法:
char a[] = “the quick brown fox”;
char b[] = “the quick black fox”;
int n = 12;
if (strncmp(a, b,n) > 0)
printf(“前%d个字符中\n”%s"比”%s"要%s\n",n, a,b, strcmp(a, b) > 0?“大”:“小”);
运行结果:
前12个字符中
“the quick brown fox"比"the quick black fox"要大
5,输入函数scanf_s()
作用:检查输入的字符是否超越边界(数字大小)
scanf_s(”%s",地址,地址大小);
返回值:成功输出1,失败输出0,(有的编译器可能不是这个结果)
用法:
char a[5];
if (scanf_s("%s", a, 3) == 0)
printf(“输入时出错\n”);
else
printf("%s\n", a);
运行结果:
(输入ab):输出ab;
(输入abc):输出:输入时出错
注意:输入值要<=地址大小-1,因为最后一个字符是\0

发布了21 篇原创文章 · 获赞 0 · 访问量 372

猜你喜欢

转载自blog.csdn.net/gaoxingzhe/article/details/104404581
今日推荐