【C语言】利用数组处理批量数据(字符数组)

这篇具有很好参考价值的文章主要介绍了【C语言】利用数组处理批量数据(字符数组)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言:前面已经介绍了,字符数据是以字符的ASCII代码存储在存储单元中的,一般占一个字节。由于ASCII代码也属于整数形式,因此在C99标准中,把字符类型归纳为整型类型中的一种。

💖 博主CSDN主页:卫卫卫的个人主页 💞
👉 专栏分类:C程序设计谭浩强版本 👈
💯代码仓库:卫卫周大胖的学习日记💫
💪关注博主和博主一起学习!一起努力!
【C语言】利用数组处理批量数据(字符数组),C程序设计谭浩强版本,c语言,开发语言



怎样定义字符数组

用来存放字符数据的数组是字符数组。在字符数组中的一个元素内存放一个字符。定义字符数组的方法与定义数值型数组的方法类似。例如:

char c[10];
c[0] ='I'; c[1] =' '; c[2] ='a'; c[3] ='m'; c[4] = ' '; 
c[5] = 'h'; c[6] ='a'; c[7] ='p'; c[8] = 'p'; c[9] = 'y';

以上定义了c为字符数组,包含了10个元素。赋值以后数组的状态如下图所示:

【C语言】利用数组处理批量数据(字符数组),C程序设计谭浩强版本,c语言,开发语言
由于字符型数据是以整数的形式(ASCII代码)存放的,因此也可以用整型数组来存放数据,例如:

int c[10];
c[0] = 'a';
//虽然合法,但是浪费空间

字符数组的初始化

对于字符数组的初始化,最容易理解的方式就是用"初始化列表",把各个字符赋给数组中的各个元素。例如:

char c[10] = {'I',' ','a','m',' ','h','a','p','p','y'};

把10个字符依次赋给c[0] ~c[9] 这10个元素。

如果在定义字符数组时不进行初始化,则数组中各元素的值是不可预料的。如果花括号中提供的初值的个数(即字符个数)大于数组长度,则出现语法错误。如果初值个数小于数组长度,则只将这些字符赋给数组中前面那些元素,其余的元素自动定为空字符(‘\0’),例如:

char c[10] = { 'a','b','c',' ','d','m','y','h' };

数组状态如下图所示:
(Vscode2019)下的状态
【C语言】利用数组处理批量数据(字符数组),C程序设计谭浩强版本,c语言,开发语言
如果提供的初值个数与预定的数组长度相同,在定义时可以省略数组长度,系统会自动根据初值的个数确定数组长度。例如:

int main()
{
	char c[] = { 'a','b','c',' ','d','m','y','h' };
	printf("数组的长度是%d\n", sizeof(c)/sizeof(c[0]));//计算数组的长度
	return 0;
}

运行结果:
【C语言】利用数组处理批量数据(字符数组),C程序设计谭浩强版本,c语言,开发语言


怎样引用字符数组中的元素

可以引用字符数组中的一个元素,得到一个字符。
例题:输出一个已知字符

int main()
{
	char c[15] = { 'I',' ','a','m',' ','a',' ','s','t','u','d','e','n','t'};
	int i = 0;
	for (i = 0; i < 15; i++)
	{
		printf("%c", c[i]);
	}
	printf("\n");
	return 0;
}

运行结果:
【C语言】利用数组处理批量数据(字符数组),C程序设计谭浩强版本,c语言,开发语言


例题2:输出一个菱形

int main()
{
    int line = 0;
    scanf("%d", &line);
    //打印上半部分;
    int i = 0;
    for (i = 0; i < line; i++)
    {
        //打印一行
        //打印空格
        //打印*
        int j = 0;
        for (j = 0; j < line  - 1 - i ; j++)
        {
            printf(" ");
        }
        //打印*
        for (j = 0; j < 2 * i + 1 ; j++)
        {
            printf("*");
        }
        printf("\n");
    }
    //下
    for (i = 0; i < line - 1; i++)
    {
        //打印一行
        //打印空格
        //打印*
        int j = 0;
        for (j = 0; j <= i; j++)
        {
            printf(" ");
        }
        //打印*
        for (j = 0; j < 2 *(line - i - 1)- 1; j++)
        {
            printf("*");
        }
        printf("\n");
    }
    return 0;
}

运行结果:
【C语言】利用数组处理批量数据(字符数组),C程序设计谭浩强版本,c语言,开发语言


字符串和字符串的结束标志

在C语言中,是将字符串作为字符数组来处理的。在实际工作中,人们关心的往往是字符串的有序长度。例如,定义一个字符数组的长度为100,而实际有效字符只有40个。为了测定字符串的实际长度,C语言规定了一个"字符串结束标志",以字符’\0’作为结束标志。如果字符数组中有若干字符前面9个字符都不是空字符(‘\0’),而第十个字符是‘\0’,则认为该数组中有一个字符串,其有效字符为9个。也就是说,遇到字符‘\0’ 时,表示字符串结束,把前面的字符组成一个字符串。

对于C语言处理字符串的方法有以上的了解后,再对字符数组初始化的方法补充了一种方法,即用字符串常量来使字符数组初始化。例如:

char c[] ="I am a student";

这里不像前面用单个字符作为字符数组的初始值,而是用一个字符串(注意字符串的两端是双撇号而不是单撇号扩起来的)作为初值。显然这种方式更加直观、方便、符号人们的习惯。请注意,此时c的长度不是14,而是15。因为字符串常量的最好由系统加上一个’\0’。

int main()
{
	char c[] = "I am a student";
	printf("sz = %d\n", sizeof(c) / sizeof(c[0]));//计算长度(包括\0)
	printf("len = %d\n", strlen(c));//计算长度(不包括\0)
	return 0;
}

运行结果:【C语言】利用数组处理批量数据(字符数组),C程序设计谭浩强版本,c语言,开发语言

(这里关于sizeof和strlen的区别就不具体说明,有感兴趣的可以看我之前文章,详细讲解了strlen与sizeof)关于strlen与sizeof


字符数组的输入输出

字符数组的输入输出可以有两种方法。

  1. 逐个字符输入输出。用格式符"%c"输入或输出一个字符如下图
  2. 将整个字符串一次输入或输出。用"%s"格式符,意思是对字符串(string)的输入输出。例如:
	char c[] = "china";
	printf("%s\n", c);

在内存中数组c的存储情况为:
【C语言】利用数组处理批量数据(字符数组),C程序设计谭浩强版本,c语言,开发语言

输出时,遇到’\0’就停止输出。输出结果为:
【C语言】利用数组处理批量数据(字符数组),C程序设计谭浩强版本,c语言,开发语言

用字符串处理函数

在C函数库中提供了一些专门处理字符串的函数,方便使用。几乎所有版本的C语言编译系统都提供这些函数。下面介绍几种常用的函数。

puts函数 – 输出字符串的函数

其一般形式为
puts(字符数组)
其作用是将一个字符串(以’\0’作为结束的字符序列)输出到终端,且puts函数输出使将字符串的结束标志’\0’转换成了’\n’,即输出完字符串后换行
例如:

int main()
{
	char c[] = "china";
	puts(c);
	return 0;
}

运行结果:

【C语言】利用数组处理批量数据(字符数组),C程序设计谭浩强版本,c语言,开发语言


gets函数 – 输入字符串

其一般形式为:
gets(字符数组)
其作用是从终端输入一个字符串到字符数组,并得到一个函数值。该函数值是字符数组的起始地址。
例如:

int main()
{
	char c[10] = { 0 };
	gets(c);
	puts(c);
	return 0;
}

运行结果:【C语言】利用数组处理批量数据(字符数组),C程序设计谭浩强版本,c语言,开发语言


  • strcat函数 – 字符串连接函数
  • strcpy函数与strncpy函数 – 字符串复制函数
  • strcmp函数 – 字符串比较函数

关于这些函数的讲解在这里我也不过多介绍了,各位可以点这个连接跳转到我前面的博客,里面详细讲解了这几个函数并且如何模拟实现这些函数。
字符串函数的讲解与模拟实现


字符数组应用举例

例题:输入一行字符,统计其中有多少单词,单词之间用空格隔开。
方法1:

int main()
{
	char arr[20] = { 0 };
	gets(arr);
	char* str = arr;
	int count = 0;
	int i = 0;
	while (*str)//判断'\0'
	{
		if (*str != ' ')//找出非空格的数
		{
			count++;
		}
		str++;
	}
	printf("%d\n", count);
	return 0;
}

方法2:

int main()
{
	char arr[20] = { 0 };
	int i = 0;
	int count = 0;
	gets(arr);
	for (i = 0; i < 20; i++)//变量数组
	{
		if (arr[i] != '\0' && arr[i] != ' ')
		{
			count++;
		}
	}
	printf("%d\n", count);
	return 0;
}

运行结果:【C语言】利用数组处理批量数据(字符数组),C程序设计谭浩强版本,c语言,开发语言


结语:今天的内容就到这里吧,谢谢各位的观看,如果有讲的不好的地方也请各位多多指出,作者每一条评论都会读的,谢谢各位。文章来源地址https://www.toymoban.com/news/detail-723289.html

🫵🫵🫵 祝各位接下来好运连连 💞

到了这里,关于【C语言】利用数组处理批量数据(字符数组)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【编码狂想】LeetCode 字符串和数组篇:挑战算法精髓,深化程序设计基础

    ​ 🌈 个人主页: Sarapines Programmer  🔥 系列专栏: 本期文章收录在《C语言闯关笔记》,大家有兴趣可以浏览和关注,后面将会有更多精彩内容!  ⏰翰墨致赠:翩翩风华激彩虹,豪情壮志醉长空。 剑指星河舞红尘,梦驰烈马向未来。 ​ ​ 🎉欢迎大家关注🔍点赞👍收藏

    2024年02月04日
    浏览(50)
  • C语言程序设计:编写函数,统计字符串中数字字符的个数

    题目内容: 编写函数,求给定字符串中数字字符的个数,在主函数中输入字符串及输出统计的个数。 输入格式: %s 输出格式: %d 输入样例: abc123fg 输出样例: 3 时间限制:500ms内存限制:32000kb

    2024年02月11日
    浏览(63)
  • 【数据挖掘与人工智能自然语言处理】自然语言处理和人工智能:如何利用自然语言处理技术进行数据挖掘

    作者:禅与计算机程序设计艺术 随着互联网和大数据时代的到来,数据挖掘已成为各个行业的热门话题。数据挖掘的核心在于发现数据中的有价值信息,而自然语言处理(NLP)技术是实现这一目标的重要手段。本文旨在通过自然语言处理技术进行数据挖掘,为数据挖掘提供一

    2024年02月05日
    浏览(94)
  • 利用chatgpt大语言模型来做数据预处理

    数据预处理是机器学习中的一个重要步骤,包括数据清洗、数据转换、特征选择等。这些步骤通常需要人工进行,或者使用专门的数据预处理工具和库,如Python的Pandas库、Scikit-learn库等。 今天我们将利用chatgpt(国内版本-小策智能问答)的辅助帮我们进行数据预处理,本文将用

    2024年02月06日
    浏览(48)
  • C语言程序设计:删除字符串中的数字

    题目内容: 编程:从键盘上输入一个含有数字的字符串,然后在“原字符串”中删除其中的数字。如输入的字符串为“ab12cd345e”,则处理后的字符串为“abcde”。程序中只能定义一个数组。 提示:所谓删除就是将后面的非数字字符前移,将数字覆盖掉。要注意字符串结束符

    2024年02月04日
    浏览(48)
  • C语言通过ODBC函数操作Access数据库(mdb和accdb格式)(char字符数组)

    编译环境:Windows XP + Visual Studio 2010 数据库:Access 2010,accdb格式 本例程只使用char[]字符数组,不使用wchar_t[]字符数组,更适合C语言初学者。 如果读取字符串时,db_bind_str提供的字符数组空间小了,db_fetch会执行失败返回-2。 由于Windows系统设计原因,char[]字符数组只能存储G

    2024年02月02日
    浏览(49)
  • C++中利用OpenCV进行图像批量处理

    想要对大量图像进行简单处理,我们可以利用代码实现。 OpenCV作为开源的图像处理库,安装方便,容易上手,功能强大,受到了很多人的喜爱。 笔者正在参加全国大学生智能汽车竞赛。由于放假在家,家中没有铺设赛道的条件,我找到了一款上位机,可以将智能车的图像导

    2024年02月03日
    浏览(46)
  • 【软件设计师07】程序设计语言与语言处理程序基础

    编译与解释、文法、正规式、有限自动机、表达式、传值与传址、多中程序语言特点 (逐渐降低考察比例,很少考察) 概念 文法类型 语法推导树 有限自动机 与正规式(重点) 常见问题:给一个串比如01、10、001等,看图中起点到终点能否连起来得到这样的串 正规式 是有限自

    2023年04月08日
    浏览(59)
  • 利用ChatGPT如何进行批量长文本处理工具GPTBAT

    大家好,我是技术宅小伙,今天要跟大家分享一下我之前写的 GPT 长文本处理程序。当时我写完后就把它放到 Hog 上了,因为最开始是为了自己用,所以后来就忘掉了。最近有同学把它翻出来用,然后经常来问我,说不知道这个东西怎么用。其实在我看来这个挺简单的,但是如

    2023年04月22日
    浏览(45)
  • 浙大版《C语言程序设计》第四版(何钦铭颜晖) 第7章 数组 课后习题答案

    你也可以上程序咖(https://meta.chengxuka.com),打开大学幕题板块,不但有答案,讲解,还可以在线答题。 一、选择题 1.假定 int 类型变量占用两个字节,则以下定义的数组 a 在内存中所占字节数是( )。 A. 20 B.10 C.6 D.3 答:A 解析:题目中,根据 int a[10] ,表示定义了数组的长度

    2023年04月18日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包