C语言字符串的神奇应用–01,字符串特点简述
在学习C语言过程中,除了神出鬼没的指针难以驯服之外,又碰到一个让人头大的东西----字符串。字符串由于ASCII码的存在,存在排序、比较的操作;记录一些遇到的比较经典的字符串骚操作。
1、ASCII码
ASCII(American Standard Code for Information Interchange,美国信息互换标准代码)是一套基于拉丁字母的字符编码,共收录了 128 个字符,用一个字节就可以存储,它等同于国际标准 ISO/IEC 646。
大写字母
ASCII 编码中第 65~90 个字符(A ~ Z)是字母表中26个字母的大写格式,其编码跟字母顺序按正序排列。
小写字母
ASCII 编码中第 97~122 个字符(a ~ z)是字母表中26个字母的小写格式,其编码跟字母顺序按正序排列。
2、把字符串转化成数字
数字在计算机中既能以数值形式存储,也能以字符串形式存储,比如数字213以’2’ 、‘1’ 、‘3’ 、’\o’ 的形式存储在字符串数组中。以数值形式存储,存储的是int类型的值。使用printf() 和scanf()函数和附带的%d等转换说明,将数字在数值形式和字符串形式之间进行转换。
atoi()函数可以把一个字母数字转换为一个整数:
//头文件 :#include <stdlib.h>
int atoi(const char *nptr);
//使用案例
char str1[1000] = "hello5";
printf("%d\n",atoi(str1)); //0
char str2[1000] = "5hello5";
printf("%d\n",atoi(str2)); //5
char str3[1000] = "555hello5";
printf("%d\n",atoi(str3)); //55
atoi()函数通过传入一个字符串,将字符串头部存储与字符串格式的数字,转化成int值返回,若字符串头部不是数字,返回0。
还可以使用printf()和%d,直接将字符的ASCII编码打印出来。
char str3[1000] = "555hello5";
printf("%d\n",'l'); //108
printf("%d\n",str3[5]); //108
3、字符串的比较
strcmp()函数
int strcmp(const char *s1, const char *s2);
strcmp()函数比较两个字符串s1和s2中字符在ASCII表中的大小,若两字符串相等,则返回0,依次比较两字符串中的字符的ASCII码,出现第一个字符不同时,大于则返回1,小于则返回-1;
strcmp("A", "A"); //0
strcmp("B", "A"); //1
strcmp("A", "B"); //-1
strcmp("AB", "B"); //-1
strcmp("AC", "AB"); //-1
注意:函数strcmp()比较的是字符串“A",不是字符’A‘ ,char类型实际是整型,可以用关系运算符进行比较。
char ch1 = 'A';
char ch2 = 'B';
if(ch1 < ch2) //为真