关于字符和字符串的一些函数使用的注意事项

关于字符串函数,有很多且具有类似功能的函数,但在某些特殊情况下有很大不同:
1.cin、scanf、gets、getline、getchar、(cin.get、cin.getline)函数
cin函数和scanf函数类似,但若字符是空格、tab或换行这些分隔符时,cin会将其忽略并清除,继续读取下一个字符,而scanf函数就不是这种情况,如果一次性输入多个字符(%c),空格也能正常输入输出,但如果输入字符串(%s)遇到空格等分隔符时,编译器认为输入已经结束,输出空格等分隔符之前的所有字符;gets函数和getline函数的一个主要区别是,gets函数在头文件<stdio.h>中声明,而getline函数是在头文件<string.h>中声明,其他方面大致相同,只不过getline只可以输入string类型字符串,而不可以输入字符数组(cin.get、cin.getline与getline一致),而gets函数是字符数组和string类型字符串均可以正常输入。另外,对于getchar函数,它与其他函数最大的不同之处在于它能够输入回车字符,虽然getchar单次只能获取一个字符,但是一旦将其放在循环中,就可以像scanf函数、gets函数一样达到输入字符串的效果。
cout、printf、puts、putchar函数的区别同理。
2.strlen、length()、size()函数
三个函数都能读取字符串长度,返回字符串中字符个数,头文件都是<string.h>,但是也有区别:
当 string 中含有空字符’\0’,使用 strlen() 获取 string 的长度时会被截断,使用函数 length() 和 size() 可以返回 string 的真实长度。
注意:sizeof()是算符,不是函数,返回的是数组(字符串)所占的字节数而不是字符串的长度。
3.strcat,strcpy,strcmp函数(头文件<string.h>)
注意:源字符串必须以'\0'结尾,目标字符串(strDestination)在strcmp函数中也必须以'\0'结尾
strcpy---字符串复制
char *strcpy( char *strDestination, const char *strSource );
功能:将源字符串(strSource)的内容(包括'\0')拷贝到目标字符串(strDestination)并返回目标字符串首字符地址
strcat---字符串连接
char *strcat( char *strDestination, const char *strSource );
功能:将源字符串(strSource)追加到目标字符串(strDestination)的后面,并返回目标字符串首字符地址
strcmp---字符串比较
int strcmp( const char *string1, const char *string2 );
功能:比较字符串string1与字符串string2是否相等,如果string1大于string2,则返回大于0的值 ,如果string1小于string2,则返回小于0的值 ,string1等于string2,则返回0。比较的方法:从string1和string2的首字符开始比较,比较它们的ASCII值,如果相等就比较下一个字符的ASCII值(包括\0)直到得出结果(两者比较到\0处后还相等,那就证明两字符串相等)


全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务