● 字符是构造源程序的基本单位。每个程序都是由一系列的字符组成的。当这些字符被有意义的组合在一起时,就被计算机解释成能够完成某个任务的一串指令。
● 程序中,当一个字符被一对单引号引起来后就被认为是一个字符常量。
● 字符常量实际上是一个整数,它的数值等于机器字符集中对应的整数值。
● 字符串是被作为一个整体来对待的一串字符。组成字符串的字符可以是字母数字或者特殊字符。
● 在C语言中,字符串文本或字符串常量是被写在一对双引号中的。
● C语言中字符串是通过字符数组来实现的,所有表示字符串的字符数组的最后一个元素都是空字符(Null character(’\0’))。
● 对一个字符串的访问是通过指向字符串的第一个字符的指针来实现的。字符串的值就是它第一个字符的地址。
● 在C语言中,字符串就是指针——指向字符串首个字符的指针
Tips:
1.没有定义一个足够大的字符数组来保存标志字符串结束的空字符。是一个错误。
2.打印一个不包含字符串结束符的字符串,将导致字符串后边的字符也被持续的打 印出来,直到遇到一个空字符为止。
3.在用字符数组存储字符串时,应保证字符数组足够大,以便能容纳可能存储的最长字符串。C语言允许存储任意长度的字符串。如果一个字符串的长度大于存储它的字符数组的长度,那么超出数组边界之外的字符就会覆盖掉数组后面的存储单元中的数据。
● 在使用scanf来读入字符数组时,必须明确写出域宽。例如scanf ("%19s",word); word[20] ;域宽19保证了scanf函数最多读入19个字符,然后将字符串结束符存储到数组中最后一个元素位置。
● 字符处理库函数 包含了用于对字符数据进行测试和操作的函数。每个函数都接收一个unsigned char 字符(用整数表示)或EOF作为实参。
● 字符串转换函数将数字字符串转换为整型或浮点型的数值。
● 函数strtod将其内容转换为双精度浮点数
● 函数strtol将其内容解释为指定类型的整数
● 函数stroul将其内容解释为无符号长整型的数值
● 函数fgets从标准输入流中读取字符存到其第一个实参即一个字符数组中,直到遇到换行符或文件结束符为止。当读入的字符个数达到最大值时,函数fgets也会停止输入。可读入字符的最大个数等于fgets第二个实参减-。第三个实参指定了从哪个输入流中读取字符
● 函数putchar的功能是打印它的字符实参。
● 函数getchar从标准输入中读入一个字符,并以整型值的形式将其返回。函数puts接收一个字符串作为实参,然后将其打印出来并换行
● 函数sprintf将格式化的数据存入字符数组s中。函数sprintf与函数printf使用相同的转换说明符。
● 函数sscanf从字符数组s中读入格式化数据。函数sscanf与函数scanf使用相同的转换说明符。
● strcpy函数将第二个字符串复制到第一个字符数组中,返回第一个字符数组的值
● strncpy函数将s中的至多n个字符复制到字符数组s1中,返回s1的值
● strcat函数将第二个实参拼接到第一个实参(一个包含字符串的数组)的末尾。第二个实参中的第一个字符替换了第一个实参中表示字符串结束的空字符(‘\0’)。必须确保保存第一个字符串的数组足够大,以便足以存放第一个字符串加第二个字符串以及从第二个字符串复制过来的字符串结束符。
● 函数strncat将第二个字符串中指定个数的字符拼接到第一个字符串的末尾。字符串结束符会被自动地追加到结果字符串的末尾。
● 函数strcmp逐个字符的比较第一个实参和第二个实参字符串。若两个字符串相等则返回 0。若第一个小,则返回负值。若第一个大,则返回正值。
● 函数strncmp和函数strcmp是等价的,只不过strcnmp最多比较指定数目的字符。遇到字符串结束符以后函数strncmp就不再做比较了。程序打印每次调用返回的整型值
● strchr函数的功能是在一个字符串中查找某一字符第一次出现的位置。若找到该字符,则函数返回指向该字符串中该字符的指针,否则函数返回NULL。
● 函数strcspn的功能是确定第一个实参字符串中不包含第二个实参字符串中任一字符的起始字符串片段的长度。函数返回字符串前段的长度
● 函数strpbrk的功能是在第一个实参字符串中,查找第二个实参字符串中的任一字符第一次出现的位置。若第二个实参字符串中的某个字符被找到,则函数返回指向第一个实参中该字符的指针,否则函数返回NULL
● 函数strrchr在一个字符串中查找指定字符最后一次出现的位置。若查找到这个字符,则函数返回指向字符串中该字符的指针,否则函数返回NULL。
● 函数strspn确定第一个实参字符串中只包含第二个实参字符串中字符的起始字符串片段的长度
● 函数strstr在第一个实参字符串中查找首次出现第二个实参字符串的位置。若在第一个字符串中找到了第二个字符串,则函数返回指向第一个字符串中首次出现第二个字符串的位置的指针。否则函数返回NULL
● 函数strtok用于将一个字符串分解成一系列的标号。标号是被分隔符(通常是空格或者标点符号,但实际上分隔符可以是任意字符)分开的一个字符序列。
● 函数memcpy的功能是将第二个实参所指对象中指定数目的字符复制到第一个实参所指向的对象中,该函数可以接收指向任意类型对象的指针作为实参。若这两个对象在内存中有重叠(即它们都是同一个对象的一个部分),则函数的执行结果没有定义。若出现这种情况,可使用memmove函数
● 函数memmove将第二个实参所指对象中指定数目的字节复制到第一个实参所指向的对象中。复制的过程就好比是第二个实参中的字节先被复制到一个临时的字符数组中,然后再从这个临时数组复制到第一个实参中。其优点是允许将一个字符串中的一部分复制到同一字符串中的另外一部分,甚至这两部分是有重叠的。
● 函数memcmp将对第一个实参中指定数目的字符与第二个实参中相应数目的字符进行比较。若第一个实参中的字符大于第二个实参中的字符,则函数返回一个大于0的数。等于则返回0。小于则返回小于0的数。
● 函数memchr在一个对象的指定数目的字节中,查找一个unsigned char(无符号字符)型的单字节数据首次出现的位置。若找到此字节,则函数返回指向对象中该字节的指针,否则函数返回NULL指针
● 函数memset将第二个实参中的字节复制到第一个实参所指对象的前n个字节中,其中n是第三个实参
● 函数strerror接收一个错误号,然后创建一个错误信息字符串,最后返回指向这个字符串的指针
● 函数strlen接收一个字符串作为实参,然后返回这个字符串中字符的个数,即字符串长度,不包括字符串结束符