文章目录

  • 前言
  • strlen
  • strcpy_s
  • strncpy_s
  • strcat_s
  • strncat_s
  • strcmp
  • strncmp
  • strtok_s
  • atoi
  • 总结



前言

从开始学C到现在,一直觉得字符串的处理是最难的,尤其是记不住string.h这个头文件里字符串的处理函数,而且我用的又是VS2019,有些字符串处理函数还和平时用法不一样,所以就在这里总结了下在VS2019中字符串函数的用法。


strlen

size_t strlen( const char* str)

功能:计算字符串长度
返回值:字符串的长度,类型为size_t,说明符为%zu

·size_t,可以理解为无符号长整形,即%lu

strcpy_s

char* strcpy_s(char * dest, size_t _SizeInBytes, const char* src)

功能:将参数src字符串拷贝到dest所指的位置
返回值:返回参数dest的字符串起始地址

  • 第二个形参是为了防止字符串过长超出缓存区内存引发问题而要求的。它的大小一般为str所占字节长度,即sizeof ( src )
strncpy_s

char* strncpy_s(char* dest, size_t _SizeInBytes, const char* src, size_t num)

功能:拷贝src字符串的前num个字符到dest
返回值:返回dest字符串的起始地址

  • 第二个形参一般为num+1
strcat_s

char* strcat_s(char* dest, size_t _SizeInBytes, const char* src)

功能:字符串连接
返回值:返回dest字符串的起始地址

  • 第二个形参一般为sizeof( dest ) + sizeof( src ) - 1
strncat_s

char* strncat_s(char* dest, size_t _SizeInBytes, const char* src, size_t num)

功能:将src字符串的前num个字符连接到dest上
返回值:返回dest字符串的起始地址

  • 第二个参数一般为sizeof( dest )+num
strcmp

int strcmp (const char* str1,const char* str2)

功能:字符串比较
返回值:若参数相同返回0,str1大于str2返回大于0的值,小于返回小于0的值

  • 判断两个字符串的ASCII值
  • 区分大小写比较,若不希望区大小写则使用stricmp
strncmp

int strcmp (const char* str1,const char* str2,size_t num)

功能:指定长度比较
返回值:与strcmp相同

strtok_s

char* strtok_s(char *_String, const char *_Delimiter, char **_Context)

功能:根据分隔符将字符串分割成一个个片段
返回值:返回分割后的第一个字符串指针,如果无法分割则返回NULL

#include <stdio.h>
#include <string.h>
int main()
{
	char s[] = "He,llo";
	char* p1=NULL;
	char* p2=NULL;
	p1 = strtok_s(s, ",", &p2);
	printf("%s\n%s",p1,p2);
	return 0;
}
输出:
He
llo
atoi

int atoi (const char* str)

功能:将字符串转换为整型
返回值:返回转换后的整型数。如果不能转换则返回0

  • 所在stdlib.h头文件中

总结

这里只是写了一些常用的和在VS2019中不一样的字符串处理函数,还有一些字符串函数的使用,请阅读(C语言)常见字符函数和字符串函数),除部分函数外,用法都与VS一致。

如有错误,希望大佬们即时纠正,谢谢!