C语言字符、字符串

  • Post author:
  • Post category:其他


字符串是一串零个或者多个字符,并且以一个位模式为全0的NUL字节结尾。

C语言没有显式的字符串数据类型,字符串都是以字符串常量的形式出现或者存储在数组中,字符串常量适用于程序不会修改字符串数据的字符串,其他类型的数组必须存储于字符数组或动态分配的内存中。


字符串函数

C语言没有字符串数据类型的处理函数,需要调用

<string.h>

头文件。

字符串常用函数
函数名 功能
char *strcpy( char *dst, char const *src ); 把 src 的字符串

复制

到 dst 的字符串。
char *strncpy( char *dst, char const *src, size_t len ); 把 src 的字符串

前len个字符复制

到 dst 的字符串。
char *strcat( char *dst, char const *src ); 把 src 的字符串

添加

到 dst 的字符串后面。
char *strncat( char *dst, char const *src, size_t len ); 把 src 的字符串

前len个字符添加

到 dst 的字符串后面。
int strcmp( char const *s1, char const *s2 );

把 s1 字符串的字符与 s2 字符串的字符

逐个比较

,

s1 > s2,返回值>0; s1 = s2,返回值=0; s1 < s2,返回值<0。

size_t strlen( char const *string ); 计算字符串 string 的长度,直到’\0’结束,但不包括’\0’。返回值

无符号整型。
char *strchr( char const *str, int ch ); 在字符串str中

查找

字符ch的

第一次出现

的位置,并返回改位置的指针。
char *strrchr( char const *str, int ch ); 在字符串str中

查找

字符ch的

最后一次出现

的位置,并返回改位置的指针。
char *strpbrk( char const *str, char const *group ); 在字符串str中

查找

字符串group中字符的

第一次出现

的位置,不包括’\0’。
char *strstr( char const *s1, char const *s2 ); 在字符串s1中

查找

字符串s2

第一


次出现

的位置,并返回改位置的指针。
size_t strspn( char const *str, char const *group ); 在字符串str

开头连续有几个字符

和字符串group中的字符

相同。
size_t strcspn( char const *str, char const *group ); 在字符串str

开头连续有几个字符

和字符串group中的字符不

相同。
char *strtok( char *str, char const *sep ); 用字符串sep作为分隔符

分隔

字符串str。
char *strerror( int error_number ); 返回指向错误字符串的指针(一般输入为整型变量errno).
void *memcpy( void *dst, void const *src, size_t length ); 把 src 字符串前 length 个字符

复制

到dst 字符串前 length 个字符。
void *memmove( void *dst, void const *src, size_t length ); 把 src 字符串前 length 个字符

复制

到dst 字符串前 length 个字符。
void *memcmp( void const *a, void const *b, size_t length ); 把 a 字符串和 b 字符串 的前 length 个字符进行

比较

void *memchr( void const *a, int ch, size_t length );

在 a 字符串的前 length  个字符中搜索第一次

出现字符 ch 的位置。

void *memset( void *a, int ch, size_t length ); 复制字符 ch到

a 字符串

的前 length 个字符。
#include <stdio.h>
#include <string.h>

int main ()
{
    static char a[10] = "qwert";
    static char b[15] = "asdfghj";
    char *d;
    printf( "a = %s\n", a);
    d = strncpy(a, b, 4);
    printf( "a = %s\n", a);
    printf( "d = %s\n", d);
    return(0);
}


字符函数

C语言没有字符串数据类型的处理函数,需要调用

<ctype.h>

头文件。

函数名 功能

int iscntrl ( int ch );
检查 ch (字符)是否是控制字符,在ASCII 编码中,这些字符的八进制代码是从 000 到 037以及 177(DEL)。
int isspace( int ch ); 检查 ch (字符)是否是空白字符。制表符’\t’、换行符’\n’、垂直制表符’\v’、换页符’\f’、回车符’\r’、空格’ ‘。
int isdigit( int ch ); 检查 ch (字符)是否是十进制数字0 ~ 9
int isxdigit( int ch ); 检查 ch (字符)是否是十六进制数字,包括 0 ~ 9、小写字母a~f、大写字母A~F。
int islower( int ch ); 检查 ch (字符)是否是小写字母a~z
int isupper( int ch ); 检查 ch (字符)是否是大写字母A~Z。
int isalpha( int ch ); 检查 ch (字符)是否是字母,包括小写字母a~z、大写字母A~Z。
int isalnum( int ch ); 检查 ch (字符)是否是字母或数字,包括 0 ~ 9、小写字母a~z、大写字母A~Z。
int ispunct(int ch ); 检查 ch (字符)是否是标点符号字符,任何不属于数字或字母的图形字符,包括 ! ” # $ % & ‘ ( ) * + , – . / : ; < = > ? @ [ \ ] ^ _ ` { | } ~
int isgraph( int ch ); 检查 ch (字符)是否是图形字符,包括字母、数字、字符和标点符号字符
int isprint( int ch ); 检查 ch (字符)是否是可打印字符,包括字母、数字、字符、标点符号字符和空格字
int tolower( int ch ); 把大写字母 ch 转换为小写字母。
int toupper( int ch ); 把小写字母 ch 转换为大写字母。
#include <stdio.h>
#include <ctype.h>
 
int main()
{
    int n;
    char a = 'D';
    printf( "a = %c\n", a);
    printf( "n = %c\n", n);
    n = isupper(a);        //判断a是否为大写字母,是返回真
    printf( "n = %c\n", n);
    a = tolower(a);        //把a转换为小写字母,若a不为大写字母,直接返回
    printf( "a = %c\n", a);
    n = isupper(a);        //判断a是否为大写字母,是返回真
    printf( "n = %c\n", n);
    return(0);
}



版权声明:本文为qq_37387733原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。