字符串处理函数及统计单词个数
一、字符串处理函数
1、puts(字符数组)
其作用是将一个字符串(以'\0'结束的字符序列)输出到终端。假如已定义str是一个字符串数组名,且该数组已被初始化为“China”,则执行
puts(str);
那么终端将显示"China"字符串。由于可以用printf函数输出字符串,因此puts函数用的不多
注:用puts函数输出的字符串中可以包含转义字符,例如
?在输出时将结束标志'\0'转换为'n',即输出完字符串后换行?
2、gets函数
作用是从终端输入一个字符串到字符数组,并且得到一个函数值。该函数值是字符数组的起始地址
例如:
?注意:用puts和gets函数只能输出或输入一个字符串,不能写成puts(str1,str2)或gets(str1,str2)
?
3、strcat函数
一般形式strcat(字符数组1,字符数组2);
strcat是字符串连接的意思,其作用是连接两个字符数组中的字符串,把字符串2接到字符串1的后面,结果放在字符串1中,函数调用后得到一个函数值---字符数组1的地址。例如
?运行结果:
?注意:①字符数组1必须足够大,以便容纳连接后的新字符串。
②连接前两个字符串的后面都有'\0',连接时候将字符串1后面的'\0'取消,只在新串最后保留'\0'
?
4、strcpy和strncpy函数
一般形式
strcpy(字符数组1,字符串2)
作用是字符串复制,即将字符串2复制到字符数组1中,例如
?注意:
①字符数组1必须足够大
②字符数组1必须是数组名形式,字符数组2可以是字符串
?
strncpy函数将紫飞虎传2中当前n个字符复制到字符数组1中去。例如
strncpy(str1,str2,2)
作用是将str2中最前面2个字符复制到str1中,取代str1中原有的最前面的2个字符。但复制的字符个数n不应多于str1中原有的字符(不包括'\0')
?
5、strcmp函数
一般形式
strcmp(字符串1,字符串2)
它的作用是比较字符串1和字符串2,例如
?字符串比较规则:
"A"<"B","a"<"b","a">"A"
?
注意:
①如果字符串1=字符串2,则函数值为0
②如果字符串1>字符串2,则函数值为一个正整数
③如果字符串1<字符串2,则函数值为一个负整数
?
6、strlen函数
它是测试字符串长度的函数,函数值为字符串中实际长度(不包括'\0'在内),例如
?输出结果不是10,也不是6,而是5?
7、strlwr函数
strlwr(字符串)
作用是将字符串中国的大写字母换成小写字母
?
??
8、strupr函数
其一般形式为
strupr(字符串)
作用是将字符串中小写的字母转换为大写字母
?
?
?二、统计一句话的单词个数
例子:
输入一行字符,统计其中有多少个单词,单词之间用空格分隔开
?程序中变量i作为循环变量,num用来统计单词个数,word作为判别是否单词的标志,若word=0表示未出现单词,如果出现单词word就设置成1.
解题思路:
单词的数目可以由空格出现次数决定(连续的若干个空格作为出现一次空格;一行开头的空格不统计在内)。如果测出某一个字符为非空格,而它的面前的字符是空格(通过if(word == 0)来判断),则表示“新单词开始了”,此时使num(单词数)累加1.如果当前字符为非空格而其前面的字符也是非空格,则意味着仍然是原来那个单词的继续,num不应该在累加1,前面一个字符是否空格可以从word的值看出来,若word等于0,则表示前一个字符是空格;如果word等于1,意味着前一个字符为非空格。
?
如果输入"I am a boy",对每个字符的有关参数状态如下:
4
?
注意:程序中for语句中的“循环条件”为
(c=string[i])!='\0'
它的作用是先将字符数组的某个元素(一个字符)赋给字符变量c。此时赋值表达式的值就应该是该市该字符,然后再判定它是否结束符,这个循环条件包含了一个赋值操作和一个关系操作。
?