C语言标准库——<string.h>

目录

1、strcpy() 

2、strncpy()

3、strcat()

4、strchr()

5、strcmp()

6、strlen()

7、strcspn()

8、memchr()

9、memcmp()

10、memcpy()

11、memset()

12、strtok()

C语言函数库——



标准库中一个常用的头文件,在使用到字符数组时需要使用。string .h 头文件定义了一个变量类型、一个宏和各种操作字符数组的函数。

1、strcpy() 

声明char *strcpy(char *dest, const char *src)

描述:把src指向的字符串复制到dest

示例:

#include 
#include 
 
int main ()
{
  char str1[]="Test string";
  char str2[40];
  char str3[40];
  strcpy (str2,str1);
  strcpy (str3,"copy successful");
  printf ("str1: %s\nstr2: %s\nstr3: %s\n",str1,str2,str3);
  return 0;
}

C语言标准库——<string.h>_第1张图片

2、strncpy()

声明char *strncpy(char *dest, const char *src, size_t n)

描述:把 src 所指向的字符串复制到 dest,最多复制 n 个字符。当 src 的长度小于 n 时,dest 的剩余部分将用空字节填充。

示例:

#include 
#include 
 
int main()
{
   char src[40];
   char dest[12];
  
   memset(dest, '\0', sizeof(dest));
   strcpy(src, "Test string");
   strncpy(dest, src, 10);
 
   printf("最终结果: %s\n", dest);
   return(0);
}

C语言标准库——<string.h>_第2张图片

3、strcat()

声明char *strcat(char *dest, const char *src)

描述:把 src 所指向的字符串追加到 dest 所指向的字符串的结尾

示例:

#include 
#include 
 
int main ()
{
   char src[50], dest[50];
 
   strcpy(src,  "First string!");
   strcpy(dest, "Second string.");

   strcat(dest, src);
   printf("结果是: (%s)", dest);
   return(0);
}

C语言标准库——<string.h>_第3张图片

4、strchr()

声明char *strchr(const char *str, int c)

描述:用于查找字符串中的一个字符,并返回该字符在字符串中第一次出现的位置

示例:

#include 
#include 

int main ()
{
	const char str[] = "hello world!";
	const char ch = 'r';
	char *ptr;

	ptr = strchr(str, ch);

	 if (ptr != NULL) {
		 printf("字符 'r' 出现的位置为 %d\n", ptr - str + 1);
		 printf("(%c) 之后的字符串是 (%s)\n", ch, ptr);
	 } else {
	 	printf("没有找到字符 'r'\n");
	 }
	return(0);
}

C语言标准库——<string.h>_第4张图片

5、strcmp()

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

描述:把 str1 所指向的字符串和 str2 所指向的字符串进行比较

返回值:如果返回值小于 0,则表示 str1 小于 str2。

如果返回值大于 0,则表示 str1 大于 str2。

如果返回值等于 0,则表示 str1 等于 str2。

示例:

#include 
#include 
 
int main ()
{
   char str1[15];
   char str2[15];
   int  ret;
 
   strcpy(str1, "abcdef");
   strcpy(str2, "ABCDEF");
   ret = strcmp(str1, str2);
   if(ret < 0)
   {
      printf("str1 小于 str2");
   }
   else if(ret > 0) 
   {
      printf("str1 大于 str2");
   }
   else 
   {
      printf("str1 等于 str2");
   }  
   return 0;
}

C语言标准库——<string.h>_第5张图片

6、strlen()

声明size_t strlen(const char *str)

描述:计算字符串 str 的长度,直到空结束字符,但不包括空结束字符

示例:

#include 
#include 

int main ()
{
   char str[50];
   int len;

   strcpy(str, "Test string!");
   len = strlen(str);
   printf("(%s)的长度是:%d\n", str, len);
   return 0;
}

C语言标准库——<string.h>_第6张图片

7、strcspn()

声明size_t strcspn(const char *str1, const char *str2)

描述:检索字符串 str1 开头连续有几个字符都不含字符串 str2 中的字符

示例:

#include 
#include 

int main ()
{
   int len;
   const char str1[] = "Test string2!";
   const char str2[] = "ing";

   len = strcspn(str1, str2);
   printf("第一个匹配的字符在:%d\n", len + 1);
   
   return 0;
}

C语言标准库——<string.h>_第7张图片

8、memchr()

声明void *memchr(const void *str, int c, size_t n)

描述:在参数 str 所指向的字符串的前 n 个字节中搜索第一次出现字符 c(一个无符号字符)的位置

示例:

#include 
#include 
 
int main ()
{
   const char str[] = "test.string";
   const char ch = '.';
   char *ret;
 
   ret = (char*)memchr(str, ch, strlen(str));
 
   printf("(%c)之后的字符串是:%s\n", ch, ret); 
   return(0);
}

C语言标准库——<string.h>_第8张图片

9、memcmp()

声明int memcmp(const void *str1, const void *str2, size_t n)

描述:把存储区 str1 和存储区 str2 的前 n 个字节进行比较

返回值:  如果返回值小于 0,则表示 str1 小于 str2。

                如果返回值大于 0,则表示 str1 大于 str2。

                如果返回值等于 0,则表示 str1 等于 str2。

示例:

#include 
#include 

int main ()
{
	char str1[15];
	char str2[15];
	int ret;
		
	memcpy(str1, "abcdef", 6);
	memcpy(str2, "ABCDEF", 6);	
	ret = memcmp(str1, str2, 5);	
	if(ret > 0)
	{
	 	printf("str2 小于 str1");
	}
	else if(ret < 0) 
	{
	 	printf("str1 小于 str2");
	}
	else 
	{
	 	printf("str1 等于 str2");
	}	
	return 0;
}

C语言标准库——<string.h>_第9张图片

10、memcpy()

声明void *memcpy(void *str1, const void *str2, size_t n)

描述:从存储区 str2 复制 n 个字节到存储区 str1

示例:

#include 
#include 
 
int main ()
{
   const char src[50] = "test string!";
   char dest[50];
 
   memcpy(dest, src, strlen(src)+1);
   printf("dest = %s\n", dest);   
   return 0;
}

C语言标准库——<string.h>_第10张图片

11、memset()

声明void *memset(void *str, int c, size_t n)

描述:复制字符c(一个无符号字符)到参数str所指向的字符串的前n个字符

示例:

#include 
#include 
 
int main ()
{
   char str[30];
   strcpy(str,"Test string!");
   puts(str);
 
   memset(str,'*',3);
   puts(str);   
   return 0;
}

C语言标准库——<string.h>_第11张图片

12、strtok()

声明char *strtok(char *str, const char *delim)

描述:分解字符串 str 为一组字符串,delim 为分隔符

示例:

#include 
#include 
 
int main () {
   char str[80] = "This is a test@string";
   const char s[2] = "@";
   char *token; 
   /* 获取第一个子字符串 */
   token = strtok(str, s);
   
   /* 继续获取其他的子字符串 */
   while( token != NULL ) {
      printf( "%s\n", token ); 
      token = strtok(NULL, s);
   }  
   return 0;
}

C语言标准库——<string.h>_第12张图片

C语言函数库——

assert()

声明void assert(int expression);

描述:expression这可以是一个变量或任何 C 表达式。如果expression为 TRUE,assert()不执行任何动作。如果expression为 FALSE,assert() 会在标准错误 stderr 上显示错误消息,并中止程序执行

示例:

#include 
#include 
 
int main()
{
   int a;
   char str[50];
     
   printf("请输入一个整数: ");
   scanf("%d", &a);
   assert(a >= 10);
   printf("输入的整数是: %d\n", a);
    
   printf("请输入字符串: ");
   scanf("%s", str);
   assert(str != NULL);
   printf("输入的字符串是: %s\n", str);
    
   return 0;
}

C语言标准库——<string.h>_第13张图片

你可能感兴趣的:(C语言,c语言,c++,算法)