`

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

    博客分类:
  • 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统计单词的总数,假设单词是以空格分隔

    统计字符串中单词个数实验 C语言

    统计字符串中单词个数实验 C语言 在本实验中,我们将学习如何使用 C语言统计字符串中单词的个数。该实验旨在掌握并实现统计字符串中单词个数的方法,并编程实现,以便为词法分析打基础。 知识点一: 字符串的定义和...

    字符串处理函数(9KB)

    “统计计数”可能涉及到对字符串中的字符、单词或特定模式进行计数,这可能需要更复杂的函数或算法,如正则表达式。“资源”可能指的是库、API文档或其他有助于理解和应用这些字符串处理函数的资料。 在“压缩包子...

    计算字符串中英文单词个数

    因此,我们的程序需要遍历输入的字符串,查找这些分隔符,然后统计单词的数量。 C语言中,可以使用标准库函数`strlen()`来获取字符串的长度,`isspace()`来判断字符是否为空格,以及`isalpha()`来判断字符是否为...

    字符串分析,分别输出字符串中个单词,并统计出单词个数

    ### 字符串分析,分别输出字符串中各单词,并统计出单词个数 #### 知识点解析 在Java编程语言中,对字符串进行分析是一项基本且重要的任务。本篇文章将详细解析如何通过Java代码实现字符串的分割以及统计其中单词...

    在一个已知的字符串中查找最长单词,假定字符串中只含字母和空格,空格用来分隔不同单词。(C语言)

    在C语言中,查找一个已知字符串中的最长单词是一项常见的编程任务,这涉及到字符串处理、指针操作以及循环控制等基础知识。在这个问题中,我们假设输入的字符串仅包含字母和空格,空格用于分隔不同的单词。接下来,...

    判断字符串中的单词个数

    根据给定的信息,我们可以从多个角度来探讨与“判断字符串中的单词个数”相关的知识点,包括C语言的基础语法、字符串处理、字符识别等。 ### C语言基础语法 #### 1. 包含头文件 在C语言编程中,通常会通过`#...

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

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

    字符串处理中的常见问题

    - 遍历字符串,使用空格作为分隔符,可以统计单词数量。 ##### 9. 类型转换 - `atoi`用于将字符串转换为整数。 - `atof`用于将字符串转换为浮点数。 - `strtol`和`strtoul`用于将字符串转换为长整型数。 #### 四、...

    用c语言实现 计算一个字符串中单词的个数

    在C语言中,计算一个字符串中的单词个数是一项基本任务,涉及到字符串处理和循环控制等基础知识。本程序的目的是读取用户输入的一行字符串,并统计其中的单词数量。以下是程序的关键部分及其解释: 首先,程序引入...

    C语言基础面试题(03-字符串函数).docx

    下面我们将深入探讨一些基于`string.h`库的常用字符串函数,并提供一些问题的解决方案。 1. **字符串函数** - `strlen`: 计算字符串的长度,不包括结束的空字符`\0`。 - `strcpy`: 复制一个字符串到另一个字符串...

    统计单词个数&&将字符串中连续出现的数字放进一维数组

    ### 统计单词个数与提取连续数字到一维数组 #### 1. 理解题目需求 根据给定的文件标题、描述以及部分源代码来看,本程序旨在完成两个功能:一是统计一个字符串中单词的数量;二是将字符串中所有连续出现的数字提取...

    统计字符串中汉字、字母、数字、英文标点、中文标点个数

    标题提到的"统计字符串中汉字、字母、数字、英文标点、中文标点个数"是一个典型的字符串分析问题,它涉及到对输入字符串进行逐个字符检查,识别并计数不同类型的字符。这个问题可以通过多种编程语言来解决,例如...

    Python 字符数统计 函数 程序.doc

    2. 字符数统计:使用 `len` 函数统计总字符数。 3. 空白字符数统计:使用 `string.whitespace` 模块来统计空白字符数。 4. 行数统计:使用 `\n` 字符来统计行数。 5. 单词数统计:使用 `split` 函数将文本分割成单词...

    统计单词个数

    在编程领域,统计单词个数是一项基础且常见的任务,它涉及到字符串处理和文本分析。这个任务通常用于数据清洗、信息提取或文本挖掘等场景。在本案例中,我们需要设计一个程序,接受一串包含空格的字符输入,然后计算...

    输入字符串,输出单词个数,输出单词所属类型

    本话题将深入探讨如何在输入字符串后,统计其中的单词个数,并识别这些单词的类型。这通常涉及到字符串的分割、计数以及词性标注等技术。 首先,我们要理解什么是“单词个数”。在大多数情况下,一个单词是由空格、...

    统计单词个数.zip

    总的来说,"统计单词个数"这个任务是程序设计和算法能力的综合考察,涵盖了文件操作、字符串处理、计数算法等多个核心编程概念,同时对参赛者的思维逻辑和问题解决能力提出了较高要求。通过解决这类问题,可以提升...

    用c++写的统计英文文章中的单词个数

    在C++编程语言中,统计英文文章中的单词个数并计算每个字母的出现频率是一项基础但重要的任务。这个过程涉及到字符串处理、字符分析以及计数算法。以下将详细阐述实现这一功能所需的关键知识点: 1. **字符串处理**...

    VB 统计单词个数

    在VB中,我们可以使用以下步骤来统计单词个数: 1. **读取文本**:使用`Open`函数打开包含文本的文件,并使用`Input`或`ReadLine`函数逐行读取文本。例如: ```vb Dim filePath As String = "C:\path\to\your\...

    文本输入字符串 字数统计

    在统计单词个数时,我们可以先读取整个文本到一个`std::string`对象,然后遍历字符串,通过空格来分割单词。 数据结构方面,这里主要涉及到两种:数组和链表。虽然在这个简单的问题中我们可能不需要使用链表,但在...

Global site tag (gtag.js) - Google Analytics