c++的字符串函数,c++语言字符串
Yyds干货库存
@toc
c没有字符串类型,字符串存储在字符数组中。c语言指定一个字符串结束标志,以字符“\0”作为终止符。字符串处理函数包含在string.h的头文件中。常见的处理字符数组有:
1.字符数组的输入和输出:
Scanf(格式控制,地址表列(在变量前添加地址提取字符))
和printf(格式控制,输出表格列)
获取(字符数组)和放置(字符数组)
int main()
char str[5];
//第一种方法:
scanf_s(%s ,str,5);//scanf_s(格式控制使用%s,字符数组名(地址为字符数组名),缓冲区大小(表示最多读取5-1个字符))
printf(%s\n ,str);
//第二种方法:
gets_s(str,5);//get_s(字符数组名,缓冲区大小)
卖出(str);
返回0;
}
两者的区别:gets()和puts()函数只能输入输出一个字符串,不能输出很多,而scanf()和printf()可以输入输出很多。如PUTS (STR1,str 2);这是错误的写法。
2.字符串连接函数:
Strcat(字符数组1,字符数组2)
int main(void)
char str 1[15]= hello ;//字符数组1
char str 2[6]= world ;//字符数组2
strcat_s(str1,str 2);
printf(%s\n ,str 1);
返回0;
}
1.字符串2连接到字符串1的后面,连接的结果放入字符数组1,最后得到字符数组1的地址;
2.两个字符串后都有终止符“\0”。连接时,字符串1后的终止符将被取消,只有终止符会保留在新字符串的末尾。
3.字符串复制功能:
Strcpy(字符数组1、字符串2或字符数组名)
Strncpy(字符数组1,字符串2或字符数组名,n)
int main(void)
char str 1[15];
char str 2[6]= world ;
strcpy_s(str1,str 2);//将str2字符数组复制到str1中,str 1的容量必须大于str2。
printf(%s\n ,str 1);
strncpy_s(str1,str2,3);//将前3个字符复制到str1中
看跌期权(str 1);
返回0;
}
1.如果字符数组1一开始没有初始化或复制,str1中的内容是不可预测的。复制时,str2将内容和终止符复制到str1中,而str1字符数组终止符后剩余空间中的字节内容不一定是 \ 0 ;
2.不能用赋值语句直接把字符串常量或字符数组赋给字符数组,比如str 1=" world这个写法不对。必须使用strcpy()函数。可以用赋值语句将字符赋给字符变量或字符数组。
4.字符串比较函数:
Strcmp(字符串1或字符数组,字符串2或字符数组)
int main(void)
char str 1[15]= hello ;
char str 2[6]= world ;
printf(%d\n ,strcmp(str1,str 2));
返回0;
}
1.根据ACSII代码的值从左到右比较这两个字符串,直到出现不同的字符或遇到 \ 0 ;
2.如果出现不同字符,以第一对不同字符的比较结果为准;
3.字符串1等于字符串2,函数值为0,字符串1大于字符串2,函数值为正整数,字符串1小于字符串2,函数值为负整数;
4.str1 str2不能直接比较这两个字符串,但必须使用strcmp()函数。
5.字符串长度函数:
Strlen(字符串或字符数组)
int main(void)
char str[15]= hello ;
printf(%d\n ,strlen(str));
返回0;
}
1.strlen()函数在测试字符串长度时不包含终止符;
2.为了测试字符串的实际长度,C语言指定了一个字符串结束符号,用字符 \0 作为结束符号。所以上面程序中的字符数组大小虽然是15,但是程序运行结果是5,因为碰到 \0 就自动结束了。
6.字符串转换case函数:
大写到小写:strlwr(字符数组)
小写到大写:strupr(字符数组)
int main(void)
char str[15]= Hello ;
_strlwr_s(str,6);//第一个参数传递一个char类型的指针,可以传递一个数组,第二个参数传递strlen(str) 1。
卖出(str);
_strupr_s(str,6);
printf(%s\n ,str);
返回0;
}
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。