目录
标准库中一个常用的头文件,在使用到字符数组时需要使用。string .h 头文件定义了一个变量类型、一个宏和各种操作字符数组的函数。
1、strcpy()
声明:char *strcpy(char *dest, const char *src)
描述:把src指向的字符串复制到dest
示例:
#include <stdio.h>
#include <string.h>
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;
}
2、strncpy()
声明:char *strncpy(char *dest, const char *src, size_t n)
描述:把 src 所指向的字符串复制到 dest,最多复制 n 个字符。当 src 的长度小于 n 时,dest 的剩余部分将用空字节填充。
示例:
#include <stdio.h>
#include <string.h>
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);
}
3、strcat()
声明:char *strcat(char *dest, const char *src)
描述:把 src 所指向的字符串追加到 dest 所指向的字符串的结尾
示例:
#include <stdio.h>
#include <string.h>
int main ()
{
char src[50], dest[50];
strcpy(src, "First string!");
strcpy(dest, "Second string.");
strcat(dest, src);
printf("结果是: (%s)", dest);
return(0);
}
4、strchr()
声明:char *strchr(const char *str, int c)
描述:用于查找字符串中的一个字符,并返回该字符在字符串中第一次出现的位置
示例:
#include <stdio.h>
#include <string.h>
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);
}
5、strcmp()
声明:int strcmp(const char *str1, const char *str2)
描述:把 str1 所指向的字符串和 str2 所指向的字符串进行比较
返回值:如果返回值小于 0,则表示 str1 小于 str2。
如果返回值大于 0,则表示 str1 大于 str2。
如果返回值等于 0,则表示 str1 等于 str2。
示例:
#include <stdio.h>
#include <string.h>
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;
}
6、strlen()
声明:size_t strlen(const char *str)
描述:计算字符串 str 的长度,直到空结束字符,但不包括空结束字符
示例:
#include <stdio.h>
#include <string.h>
int main ()
{
char str[50];
int len;
strcpy(str, "Test string!");
len = strlen(str);
printf("(%s)的长度是:%d\n", str, len);
return 0;
}
7、strcspn()
声明:size_t strcspn(const char *str1, const char *str2)
描述:检索字符串 str1 开头连续有几个字符都不含字符串 str2 中的字符
示例:
#include <stdio.h>
#include <string.h>
int main ()
{
int len;
const char str1[] = "Test string2!";
const char str2[] = "ing";
len = strcspn(str1, str2);
printf("第一个匹配的字符在:%d\n", len + 1);
return 0;
}
8、memchr()
声明:void *memchr(const void *str, int c, size_t n)
描述:在参数 str 所指向的字符串的前 n 个字节中搜索第一次出现字符 c(一个无符号字符)的位置
示例:
#include <stdio.h>
#include <string.h>
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);
}
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 <stdio.h>
#include <string.h>
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;
}
10、memcpy()
声明:void *memcpy(void *str1, const void *str2, size_t n)
描述:从存储区 str2 复制 n 个字节到存储区 str1
示例:
#include <stdio.h>
#include <string.h>
int main ()
{
const char src[50] = "test string!";
char dest[50];
memcpy(dest, src, strlen(src)+1);
printf("dest = %s\n", dest);
return 0;
}
11、memset()
声明:void *memset(void *str, int c, size_t n)
描述:复制字符c(一个无符号字符)到参数str所指向的字符串的前n个字符
示例:
#include <stdio.h>
#include <string.h>
int main ()
{
char str[30];
strcpy(str,"Test string!");
puts(str);
memset(str,'*',3);
puts(str);
return 0;
}
12、strtok()
声明:char *strtok(char *str, const char *delim)
描述:分解字符串 str 为一组字符串,delim 为分隔符
示例:
#include <string.h>
#include <stdio.h>
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语言函数库——<assert.h>
assert()
声明:void assert(int expression);
描述:expression这可以是一个变量或任何 C 表达式。如果expression为 TRUE,assert()不执行任何动作。如果expression为 FALSE,assert() 会在标准错误 stderr 上显示错误消息,并中止程序执行。
示例:
#include <assert.h>
#include <stdio.h>
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;
}