关于字符的基础知识
日常膜拜dalao :财神万岁!!!!!!!!!!!!!!!!!!!!!
日常凌晨三点水博客。。
字符,字符数组,字符串,字符串数组
命名与赋值
字符:char a=‘A’;
char a;cin>>a;scanf("%c",&a);
字符数组:char s[20];
s[0]=‘i’;s[1]=’ ‘;…
char s[10]={‘a’,’ ',‘T’,‘d’,‘f’…};
char s[10]=“sabcdfe”;
注意:后面的大小应小于等于数组大小减一//因为最后有‘/0’;
但不可以 char c[10];
c={‘s’,‘f’,‘d’…};
当括号中提供字符大于数组长度,按错误语法处理;
小于长度时,只给前面的那些元素,剩余空位按‘/0’处理;
如果 char c[]={‘d’,‘v’,‘s’,‘T’};时,系统会自动根据长度定义数组
二维字符数组:
char a[3][4]={“abc”,“mof”,“fds”};
字符串的输入与输出:
scanf("%s",s);//不加&
gets(s);//读入一整行字符串,与scanf 的区别是 scanf不能读入空格
字符串的处理函数:
strlen 函数
strlen 函数将接收一个 C 字符串作为实参,并返回字符串的长度。
char str[] = “Hello”;
int length = strlen(str);
在上述代码示例中,变量 length 存储的数字值为 5。
strcat 函数
strcat 函数釆用两个字符串作为形参并连接它们,
返回由第一个字符串和第二个字符串的所有字符组成的单个字符串。
const int SIZE = 13;
char string1[SIZE] = "Hello ";
char string2 [ ] = “World!”;
cout << string1 << endl;//Hello
cout << string2 << endl;//World!
strcat(string1, string2);
cout << string1 << endl;//Hello World!
strcat 函数可以将 string2 的内容复制到 string1 的末尾。
string1 在调用 strcat 之前包含有字符串 “Hello”。
调用之后,它将包含字符串 “Hello World!”。
请注意 string1 中的最后一个字符是一个空格。strcat 函数不会自动在
两个连接的字符串之间插入空格,如果需要的话,确保在合适的位置加上
空格。还需要确保存储 string1 的数组足够大,以容纳 string1 加上
string2 再加上一个 null 终止符。
以下程序段使用 sizeof 运算符在调用 strcat 之前测试一个数组的大小:
if (sizeof(string1) >= (strlen(string1) + strlen(string2) + 1))
strcat(string1, string2);
如果保存了第一个字符串的数组其大小不足以容纳两个字符串,则 strcat
函数执行之后将导致字符串溢出数组的边界。
strcpy 函数
strcpy 函数可以用来将一个字符串复制到另一个字符串中。
const int SIZE = 20;
char name[SIZE];
strcpy(name, “Albert Einstein”);
strcpy 函数实参中的第二个 C 字符串被复制到第一个 C 字符串实参指定的
地址。如果有任何内容已经存储在第一个实参所引用的位置,那么它将被覆盖,
如以下程序段所示:
char string1 [ ] = "Hello ";
cout << string1 << endl;//Hello
strcpy(string1, “World!”);
cout << string1;// World!
/strcpy 与 C++ 的本质一样,没有边界检查。如果第一个实参指定的数组
的大小不足以容纳第二个实参指定的字符串,则第一个实参指定的数组将溢出。/
strcmp 函数
该函数以两个 C 字符串作为形参,并返回一个整数,表示两个字符串相互比
较的结果。其原型如下:
int strcmp(char *string1, char *string2);
该原型表示函数将釆用两个 C 字符串作为形参并返回一个整数结果。
如果两个字符串的每个字符都相等,则结果为 0。
如果 string1 以字母顺序排在 string2 之前,则结果为负数。
如果 string1 以字母顺序排在 string2 之后,则结果为正值。
以下是使用 strcmp 确定两个字符串是否相等的示例:
if (strcmp(stringl, string2) == 0)
strncmp 函数:strcmp(string1,string2,n);
比较字符串1与2的前n个字符,返回值同strcmp
小写与大写
strlwr(string);转换为全小写 strupr(string);转换为全大写
toupper(ch[i])单个字符变大写 tolower(ch[i]);单个字符变小写
#include //判断字符类型需要的头文件
islower(ch[i])是否为小写 isupper(ch[i])是否为大写