string.h头文件(字符串函数)

mycrictfchuyin / 2024-10-13 / 原文

string.h头文件(字符串函数):

C库提供了多个处理字符串的函数,ANSI C把这些函数的原型放在string.h头文件中。要注意的是sprintf()函数,其原型在stdio.h头文件中。

strlen()函数:用于统计字符串的长度

strcat()函数:用于拼接字符串。

  • 接受两个字符串作为参数
    • 把第2个字符串的备份附加在第1个字符串末尾
    • 把拼接后形成的新字符串作为第1个字符串
    • 第2个字符串不变。
  • 该函数返回第1个参数,即拼接第2个字符串后的第1个字符串的地址。
  • 注意,该函数无法检查第1个数组是否能容纳第2个字符串

strncat()函数:该函数的第3 个参数指定了最大添加字符数

strcmp()函数:用于字符串比较。

  • 该函数通过比较运算符来比较字符串。如果两个字符串参数相同,该函数就返回0,否则返回非零值。
  • 可以用strcmp()比较储存在不同大小数组中的字符串。
  • 如果在字母表中第1个字符串位于第2个字符串前面,就返回负数;反之则返回正数
  • strcmp()比较所有的字符,按机器排序序列进行比较

strncmp()函数:可以比较到字符不同的地方,也可以只比较第3个参数指定的字符数。

strcpy()函数:用于拷贝整个字符串。

  • 相当于字符串赋值运算符。
  • 第1个参数不必指向数组的开始。
  • 第2个参数指向的字符串被拷贝至第1个参数指向的数组中。
    • 拷贝出来的字符串被称为目标字符串,最初的字符串被称为源字符串。
  • 该函数返回类型是 char*,返回的是第 1个参数的值,即一个字符的地址。

strncpy()函数:该函数的第 3 个参数指明可拷贝的最大字符数。

  • 如果拷贝到第n个字符时还未拷贝完整个源字符串,就不会拷贝空字符,此时需要有处理程序。
    • 示例:
strncpy(qwords[i], temp, TARGSIZE - 1);
qwords[i][TARGSIZE - 1] = '\0';//确保储存的是一个字符串。

sprintf()函数:把数据写入字符串,而不是打印在显示器上。

  • sprintf(,”%”,)
  • 第1个参数是目标字符串的地址。其余参数和printf()相同。

char *strpbrk(const char * s1, const char * s2);:

  • 如果 s1 字符中包含 s2字符串中的任意字符,该函数返回指向 s1 字符串首位置的指针;反之则返回空字符

char *strchr(const char * s, int c);:

  • 如果s字符串中包含c字符,该函数返回指向s字符串首位置的指针(末尾的空字符也是字符串的一部分,所以在查找范围内);反之则返回空指针。

char *strrchr(const char * s, int c);:

  • 该函数返回s字符串中c字符的最后一次出现的位置(末尾的空字符也是字符串的一部分,所以在查找范围内)。如果未找到c字符,则返回空指针。

char *strstr(const char * s1, const char * s2);

  • 该函数返回指向s1字符串中s2字符串出现的首位置。如果在s1中没有找到s2,则返回空指针。

size_t类型:是sizeof运算符返回的类型

  • 声明示例:size_t strlen(const char * s);
    • 该函数返回s字符串中的字符数,不包括末尾的空字符。

atoi/l/f()函数:用于把字母数字转换成整数

  • 该函数接受一个字符串作为参数,返回相应的整数值。
  • atoi()、atol()和atof()函数把字符串形式的数字分别转换成int、long和double类型的数字。

strtol()、strtoul()和strtod()函数把字符串形式的数字分别转换成long、unsigned long和double类型的数字。

格式转换是按照AXCII表来的,’0’转换完是48,一定要注意不是0。

使用技巧:

查找字符串并分析时

  • 使用 strcmp()来代替关系运算符

当比较字符串时

  • 使用strcpy()或strncpy()代替赋值运算符把字符串赋给字符数组。