字符串若干操作

ASCII码

字符与二进制数映射表,每个字符占一个字节,八个Bit可以表示256个字符。后128个称为扩展的ASCII码。
在这里插入图片描述
图片引用自网页:https://akaedu.github.io/book/apas01.html

区分空格字符与空字符

    char ch1 = ' ';
    printf("%c %d %o %x"\n , ch1,ch1,ch1,ch1);
    char ch2 = '\0'; //如果将ch2改为ch1,则会报错“不能重新定义”
    printf("%c %d %o %x" , ch2,ch2,ch2,ch2);

使用数据的格式化屏幕输出将“ ”和“\0”以字符、十进制整数、八进制整数、十六进制整数格式进行输出,输出结果为
在这里插入图片描述
可以看出,空格字符与空字符是不同的两个字符,空格字符对应的ASCII码为32,空字符‘\0’对应的ASCII码为0

字符数组初始化

两种初始化方法,但这种方式更加简单常用,使用字符串处理函数时,记得加上编译预处理指令:#include <string.h>

    char str1[] = "hello";
    char str2[] = "world";
    char str3[10]; //数组初始化时候需要在括号里面加上数字
    printf("%s %s\n",str1,str2);
    strcpy(str3,str1);//如果把str3改成str2这样直接覆盖是不允许的
    printf("%s %s",str3,str2);

字符串处理函数

    char *p1 = "hello";
    char *p2 = "world";
    char *p3 = NULL;
    printf("%s %s\n",p1,p2); //在p1前加上*就不行,不能进行解引用
    strcpy(p3,p2); //字符串处理函数们strcpy不能应用于字符指针?
    printf("%s %s\n",p1,p3);

程序会报错,将p3改定义成字符数组就不会报错了

    char *p1 = "hello";
    char *p2 = "world";
    char p3[10];
    printf("%s %s\n",p1,p2); //在p1前加上*就不行,不能进行解引用
    strcpy(p3,p2); //字符串处理函数们strcpy不能应用于字符指针?
    printf("%s %s\n",p1,p3);

运行结果如下
在这里插入图片描述
原因是strcpy(目的字符数组,源字符串);此函数形参第一个位置必须是一个字符数组。

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐