`

字符串处理函数及统计单词个数

    博客分类:
  • C
阅读更多

一、字符串处理函数

1、puts(字符数组)

其作用是将一个字符串(以'\0'结束的字符序列)输出到终端。假如已定义str是一个字符串数组名,且该数组已被初始化为“China”,则执行

puts(str);

那么终端将显示"China"字符串。由于可以用printf函数输出字符串,因此puts函数用的不多

注:用puts函数输出的字符串中可以包含转义字符,例如

#include "stdafx.h"
#include <Strsafe.h>


int _tmain(int argc, _TCHAR* argv[])
{
	char str[]={"China\nBei jing"};
	puts(str);
	getchar();	
	return 0;
}

输出结果:



 在输出时将结束标志'\0'转换为'n',即输出完字符串后换行

 

2、gets函数

作用是从终端输入一个字符串到字符数组,并且得到一个函数值。该函数值是字符数组的起始地址

例如:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
  
	char string[20];
    gets(string);
	printf("The string is:%s\n",string);
    system("PAUSE");	
    return 0;
}

 

 注意:用puts和gets函数只能输出或输入一个字符串,不能写成

puts(str1,str2)或gets(str1,str2)

 

3、strcat函数

一般形式strcat(字符数组1,字符数组2);

strcat是字符串连接的意思,其作用是连接两个字符数组中的字符串,把字符串2接到字符串1的后面,结果放在字符串1中,函数调用后得到一个函数值---字符数组1的地址。例如

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
  
	char str1[30] = {"People's Republic of"};
	char str2[] = {" China"};
	printf("%s",strcat(str1,str2));
    system("PAUSE");	
    return 0;
}

 运行结果:



 注意:

①字符数组1必须足够大,以便容纳连接后的新字符串。

②连接前两个字符串的后面都有'\0',连接时候将字符串1后面的'\0'取消,只在新串最后保留'\0'

 

4、strcpy和strncpy函数

一般形式

strcpy(字符数组1,字符串2)

作用是字符串复制,即将字符串2复制到字符数组1中,例如

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
    char str1[10]="",str2[]={"China"};
	strcpy(str1,str2);
	printf("str1=%s\n",str1);
    system("PAUSE");	
    return 0;
}

 

运行结果:



 

注意:

①字符数组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,例如

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
    char str1[10]="abc",str2[]={"China"};
	if(strcmp(str1,str2))
	{
       printf("str1 > str2\n");                     
    }
    if(strcmp("Hello","America"))
    {
        printf("Hello > America\n");
    }
	
    system("PAUSE");	
    return 0;
}

 

 

字符串比较规则:

"A"<"B","a"<"b","a">"A"

 

注意:

①如果字符串1=字符串2,则函数值为0

②如果字符串1>字符串2,则函数值为一个正整数

③如果字符串1<字符串2,则函数值为一个负整数

 

6、strlen函数

它是测试字符串长度的函数,函数值为字符串中实际长度(不包括'\0'在内),例如

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
    char str[10]={"China"};
	printf("The length is %d\n",strlen(str));
    system("PAUSE");	
    return 0;
}

 



 输出结果不是10,也不是6,而是5

 

7、strlwr函数

strlwr(字符串)

作用是将字符串中国的大写字母换成小写字母

 

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
    char str[10]={"China"};
	printf("The string is %s\n",strlwr(str));
    system("PAUSE");	
    return 0;
}

 

 

 

8、strupr函数

其一般形式为

strupr(字符串)

作用是将字符串中小写的字母转换为大写字母

 

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
    char str[10]={"China"};
	printf("The string is %s\n",strupr(str));
    system("PAUSE");	
    return 0;
}

 

 

 

二、统计一句话的单词个数

例子:

输入一行字符,统计其中有多少个单词,单词之间用空格分隔开

#include "stdafx.h"


int _tmain(int argc, _TCHAR* argv[])
{
	char string[81];
	int i,num = 0,word = 0;
	char c;
	gets(string);
	for (i=0;(c=string[i])!='\0';i++)
	{
		if(c == ' ')word=0;
		else if (word == 0)
		{
			word = 1;
			num++;
		}	
	}
	printf("There are %d words in the line.\n",num);
	getchar();	
	return 0;
}

 

 

运行结果:



 

程序中变量i作为循环变量,num用来统计单词个数,word作为判别是否单词的标志,若word=0表示未出现单词,如果出现单词word就设置成1.

解题思路:

单词的数目可以由空格出现次数决定(连续的若干个空格作为出现一次空格;一行开头的空格不统计在内)。如果测出某一个字符为非空格,而它的面前的字符是空格(通过if(word == 0)来判断),则表示“新单词开始了”,此时使num(单词数)累加1.如果当前字符为非空格而其前面的字符也是非空格,则意味着仍然是原来那个单词的继续,num不应该在累加1,前面一个字符是否空格可以从word的值看出来,若word等于0,则表示前一个字符是空格;如果word等于1,意味着前一个字符为非空格。

 

如果输入"I am a boy",对每个字符的有关参数状态如下:

当前字符

I

a

m

 

a

b

o

y

.

是否空格

Word原值

0

0

1

0

1

1

0

1

0

1

1

1

新单词开始否

Word新值

0

1

0

1

1

0

1

0

1

1

1

1

Num

0

1

1

2

2

2

3

3

4

4

4

4

 

注意:程序中for语句中的“循环条件”为

(c=string[i])!='\0'

它的作用是先将字符数组的某个元素(一个字符)赋给字符变量c。此时赋值表达式的值就应该是该市该字符,然后再判定它是否结束符,这个循环条件包含了一个赋值操作和一个关系操作。

 

  • 大小: 3.8 KB
  • 大小: 3.7 KB
  • 大小: 4 KB
  • 大小: 3.5 KB
  • 大小: 3.2 KB
  • 大小: 3.5 KB
  • 大小: 3.8 KB
  • 大小: 3.3 KB
  • 大小: 3.4 KB
分享到:
评论

相关推荐

    统计输入字符串中的单词个数

    统计输入字符串中的单词个数:编写一个程序,输入若干行文本,然后用函数strtok统计单词的总数,假设单词是以空格分隔

    统计一组字符串中单词个数,大写字母小写字母数字的个数

    编写程序统计一组字符串中,单词(用空格隔开的连续的字符)的个数,大写字母的个数,小写字母的个数,数字的个数,空格的个数和其他字符的个数,调用函数实现

    1400:统计单词数

    第 1 行为一个字符串,其中只含字母,表示给定单词; 第 2 行为一个字符串,其中只可能包含字母和空格,表示给定的文章。 【输出】 只有一行,如果在文章中找到给定单词则输出两个整数,两个整数之间用一个空格隔...

    设计string类

    2、为string类提供必要的成员函数,可以参考C++类库的string类提供了那些成员函数,至少应包括下标访问,子串查找、获得C风格字符串、获得字符串长度、字符串比较这几个函数 3、利用该string类完成测试程序:统计一...

    编写二个函数,其中一个函数func1完成功能为:接收字符串参数,返回一个元组,其中第一个元素为字符串中大写字母个数,

    编写二个函数,其中一个函数func1完成功能为:接收字符串参数,返回一个元组,其中第一个元素为字符串中大写字母个数,第二个元素为字符串中小写字母个数;另一个函数func2的功能为随机产生一个长度不小于10的字符串...

    C语言字符串类型题目

    其功能是统计w指向的数组中的n个单词在a指向的字符串中各自出现的次数(将非字母字符看做单词分隔符),并将统计结果依次保存在b指向的数组中。 ⑵ 编写main()函数,采用数组定义的同时进行初始化的方式,将数据...

    编制函数求数组

    数组x中存有20个四位整数,请编制函数,求出正整数的个数tn。以及百位数字大于十位数字数的个数tc,以及满足条件的这些数的算术平均ta.,将tn,tc,ta在控制台输出。

    统计文件目录下的单词频度(C#)

    vs2008下使用C#编写,统计windows某个文件目录下所有的文本文档(.txt .cpp .h)中所有单词出现的次数,并按照次数大小以及字典序输出到文本文件中 在MSRA上高级软件工程时的课程作业1,具体说明参见user_guide.docx

    python 函数 单元作业

    1.编写函数,接收一个字符串,分别统计大写字母、小写字母、数字、其他字符的个数,以元组的形式返回结果,最后调用这个函数并传递参数,输出函数的返回结果。要求不是大写字母、小写字母、数字的任意字符都记入其他...

    PHP函数库,PHP函数大全,PHP函数实例,PHP函数手册,PHP5函数库实例

    PHP统计字符串里单词出现次数 PHP缩略图类,可生成BMP格式 PHP自定义大小验证码函数 PHP获取.NET发出的WEBSERVICE数据 PHP获取FLV文件播放时间函数 PHP获取一年内所有周的开始和结束日期 php获取指定日期所在...

    strlen.php

    有关于,PHP中字符串的处理的相关函数,strlen()函数统计字符串中字符的个数,str_word_count()函数统计字符串中单词的个数,strrev()函数使字符串实现反转,strpos()函数查找字符串内相匹配字符的第一个字符的位置...

    英文文献单词统计程序

    通过dictionary对指定txt文件进行读取,显示文件中最高频率出现的100个单词

    使用 titlecase 将字符串大写:将字符串或字符串元胞数组中每个单词的首字母大写-matlab开发

    此函数将字符串或字符串元胞数组中的每个单词大写,但用户可定义的短单词集除外。 默认的非大写单词是“a”、“an”、“and”、“or”、“the”和“in”。 例子: &gt;&gt; C={'公园散步''一石两鸟''付吹笛人'}'; &gt;&gt; ...

    python简单算法04:判断一个字符串是否为回文串的排列之一

    给定一个字符串,编写一个函数判定其是否为某个回文串的排列之一。 回文串是指正反两个方向都一样的单词或短语,排列是指字母重新排列,回文串不一定是字典中的单词。 例如: 输入:“tactcoa” 输出:True(排列有...

    python统计字符串中指定字符出现次数的方法

    本文实例讲述了python统计字符串中指定字符出现次数的方法。分享给大家供大家参考。具体如下: python统计字符串中指定字符出现的次数,例如想统计字符串中空格的数量 s = "Count, the number of spaces." print s....

    浙江大学C语言上机练习题附答案

    50006 使用函数统计一个整数中数字的个数 45 50007 使用函数找水仙花数 46 50009 使用函数求余弦函数的近似值 48 50052 使用函数找最大值 49 50062 使用函数输出指定范围内的 Fibonacci 数 50 50063 使用函数找出...

    上海电机学院C语言实训答案

    从键盘输入字符(最多为80个),遇到回车键输入结束,将输入的字符串按奇偶位置拆分,奇数位上的字符在前,偶数位上的字符在后,重新组成新的字符串输出,例如输入: ab12cd3456fg,则经过程序处理后输出: a1c35fb2d...

    实验3 JavaScript编程.doc

    5.设计一个网页,输入一串用英文逗号分隔的数字字符串。编写程序,输出找出该组数中的最大、最小值、和 。并按从大到小排序后的输出结果(以逗号分隔)。 6. 要求用户在文本框中年份,点击判断按钮,用alert函数输出...

    C++实现的string 类

    2、为string类提供必要的成员函数,可以参考C++类库的string类提供了那些成员函数,至少应包括下标访问,子串查找、获得C风格字符串、获得字符串长度、字符串比较这几个函数 3、利用该string类完成测试程序:统计一...

    c++作业设计string类

    2、为string类提供必要的成员函数,可以参考C++类库的string类提供了那些成员函数,至少应包括下标访问,子串查找、获得C风格字符串、获得字符串长度、字符串比较这几个函数 3、利用该string类完成测试程序:统计一...

Global site tag (gtag.js) - Google Analytics