C语言学习笔记—字符串

告别理论!手把手教你用Vivado 2020.2为ZYNQ PL端打造一个AXI4-Full读写DDR的IP核 本文详细介绍了如何使用Vivado 2020.2为ZYNQ PL端创建AXI4-Full主控IP核,实现高效读写DDR内存的实战指南。通过环境配置、IP核创建、系统集成到软件调试的全流程讲解,帮助开发者快速掌握AXI4-Full协议在ZYNQ平台上的应用,提升PL与PS协同工作的数据传输效率。 阅读详情

字符串定义方式及输出

#include <stdio.h>
#include <stdlib.h>
int main()
{
	
    //字符串定义方式1
    int i;
    char str[5] = {'a','b','c','d','e'};
    for(i=0;i<sizeof(str)/sizeof(str[0]);i++)
    {
		printf("%c  ",str[i]);
    }
    putchar('\n');
    //字符串定义方式2
    char str2[5] = "abcde";
    for(i=0;i<sizeof(str2)/sizeof(str2[0]);i++)
    {
		printf("%c  ",str2[i]);
    }
    putchar('\n');
     //字符串定义方式3
    char str3[] = "abcdefghijklmnopq";//定义时可以省略数组长度,系统会自动根据初始值确定数组长度
    for(i=0;i<sizeof(str3)/sizeof(str3[0]);i++)
    {
		printf("%c  ",str3[i]);
    }
    putchar('\n');
    char *pstr = "hello gang gang";//指针方式如果操作不当易造成段错误
    printf("%s",pstr);
	system("pause");
	return 0;
}

字符串在内存中的存储方式

#include <stdio.h>
#include <stdlib.h>
//字符串的存储方式
int main()
{
	//连续的空间,整个数组的大小是  元素个数x元素大小
	int a[3] = {1,2,3};
    printf("a数组的大小:%d\n",sizeof(a));
    printf("a数组元素的大小:%d\n",sizeof(a[0]));
    printf("a2数组元素的大小:%d\n",sizeof(int));
    printf("a数组元素的个数:%d\n",sizeof(a)/sizeof(a[0]));
    putchar('\n');
    //连续的空间,整个数组的大小是  元素个数x元素大小
    char a2[3] = {'a','b','c'};
    printf("a2数组的大小:%d\n",sizeof(a2));
    printf("a2数组元素的大小:%d\n",sizeof(a2[0]));
    printf("a2数组元素的大小:%d\n",sizeof(char));
    printf("a2数组元素的个数:%d\n",sizeof(a2)/sizeof(a2[0]));
    putchar('\n');
    //连续的空间,整个数组的大小是  元素个数x元素大小
    char a3[3] = "abc";
    printf("a2数组的大小:%d\n",sizeof(a3));
    printf("a2数组元素的大小:%d\n",sizeof(a3[0]));
    printf("a2数组元素的大小:%d\n",sizeof(char));
    printf("a2数组元素的个数:%d\n",sizeof(a3)/sizeof(a3[0]));
    putchar('\n');
    //连续的空间,整个数组的大小是  元素个数x元素大小
    char a4[] = "abc";
    printf("a2数组的大小:%d\n",sizeof(a4));
    printf("a2数组元素的大小:%d\n",sizeof(a4[0]));
    printf("a2数组元素的大小:%d\n",sizeof(char));
    printf("a2数组元素的个数:%d\n",sizeof(a4)/sizeof(a4[0]));
    
	system("pause");
	return 0;
}

结果:
在这里插入图片描述
我们发现,整型数组的大小是没有变化的,最后一个字符串的定义方式,结果是4,多了一个 \0 ,\0是字符串的结束标志。
在输出字符串的时候,若果没有碰到’\0’,就不会停止输出,否则停止输出。
我们做个测试:

	int i = 0;
	while( a4[i] != '\0')
	{
		printf("Sc" , a4[i]);
		i++:
	}

结果同样也会是abc.
总之一句话:宇符串在内存中,除了有效字符以外,还会自动在后面补一个’\0’,作为字符串的结束标识。

计算字符串中字符的个数

#include <stdio.h>
#include <stdlib.h>
 
int main()
{
	int a[] = {1,2,3};
    printf("数组a的元素个数为:%d\n",sizeof(a)/sizeof(a[0]));
    
    char a2[128] = "hello";
    printf("数组a2的元素个数为:%d\n",sizeof(a2)/sizeof(a2[0]));
    
    printf("a2字符串的真实字符个数为:%d\n",strlen(a2));
	system("pause");
	return 0;
}

根据结果可知,sizeof不能能计算字符串中有效字符个数。可用strlen,其在计算字符串大小时遇到‘\0’就结束计数。

【XSRP软件无线电】基于软件无线电平台的FM数字接收系统设计(含有完整工程资料获取链接) 随着无线通信技术的快速发展,软件无线电(Software Defined Radio, SDR)作为一种新兴的无线通信技术,逐渐成为研究和应用的热点。传统的无线接收机通常依赖于专用硬件实现其功能,灵活性和可扩展性有限。相较之下,软件无线电利用软件来实现信号处理和调制解调功能,能够适应多种频率和调制方式,使无线通信系统更加灵活和高效。在FM(频率调制)广播中,数字接收技术的应用不仅提高了信号的抗干扰能力,还能提供更好的音质和更多的附加信息(如广播电台名称、节目内容等)。 阅读详情

相关推荐

鸿蒙OpenHarmony南向开发 轻量系统芯片移植指南(一)

OpenHarmony系统采用"系统>子系统>部件"层级架构,支持功能模块化裁剪。本文介绍了关键子系统及移植方法:1)启动恢复子系统负责内核到应用间的进程初始化,需配置启动入口标识及链接脚本;2)文件子系统提供基础文件操作接口,需适配HAL层文件读写功能,可通过Flash模拟、轻量文件系统或厂商自有方案实现。移植过程需修改config.json配置,添加对应组件定义及功能实现。系统采用模块化设计,开发者可根据实际需求灵活配置所需子系统功能。

yx525623的博客 1131

12 200c语言,程序设计语言 C2.12(11页)-原创力文档

《程序设计语言 C1》随机作业题做作业时间:2013-4-23 8:00:00至2013-6-30 22:00:00?1、以下程序的输出结果是 main() { int a=3; printf("%d\n",(a+=a-=a*a));} } (3分)A、B、C、D、A、-6B、12C、0D、-12?2、以下程序的输出结果是 main() { int a=5,b=4,c=6,d; printf("%...

weixin_30431923的博客 521

自动化专业与嵌入式

在学生时期,我是一个典型的学渣,所以只能选择电气工程、汽修、数控之类的专业。而那些高分的则可以选择计算机,电子商务,通信之类的。这些专业看起来像是蓝领和白领的分界,至今我都觉得这种制度是不人性化的。专业这块根据学生的爱好去选择是最好的,毕竟有兴趣才会”真心”去学习。谁说学渣就学不会编程、学不会金融对吧?不过也罢,在学校能学到东西的毕竟是少数,最近有些大学生发了他们的课程表给我看了下。我感觉学的太广了,什么单片机、c语言、java之类的,导致很多学生学完以后还是很迷茫,不知道自己专业到底是从事什么方向的。所以

m0_71017841的博客 3588

C 语言字符串操作

/ 将字符串 "hello" 赋值给字符数组 str。// 将字符串 str2 连接到字符串 str1 的末尾。// 将字符串 str1 复制给字符串 str2。// 获取字符串 str 的长度。// 输出 "helloworld"printf("%s", str2);// 输出 "hello"printf("str1 和 str2 不相等");printf("str1 和 str2 相等");

weixin_59246157的博客 434

Allegro PCB设计实战:5分钟搞定DDR信号线的Match Group等长规则设置

本文详细介绍了在Allegro PCB设计中,如何快速为DDR信号线设置Match Group等长规则。通过实战演练,解析了从理解相对传输延迟原理、在规则管理器中创建Match Group,到设置合理容差和利用动态绕线指示的全流程,帮助工程师在5分钟内高效完成高速信号时序约束,提升设计可靠性与效率。

gg901的博客 1054

UFS 3.1协议分析(第一至四章) -- UFS概述

Contents协议规范规范参考术语和定义简单概述通用特性接口特性功能特性 协议规范     UFS3.1协议规定了UFS电气接口和存储器件的特性以及系统架构。 特性:低功耗、高数据吞吐量、低电磁干扰、大容量存储器子系统效率的优化 电气接口:使用基于MIPI M-PHY的高级差分接口;M-PHY作为物理层,MIPI UniPro作为链路层,二者结合形成UFS接口的互联。 架构模型:参考 INCITS T10(SCSI) SAM 标准,命令协议基于 INCITS T1

Frank_sample的专栏 1万+

c语言常见的字符串函数及模拟实现

1.strlen实现原理 我们知道定义字符数组时,可以有以下两种形式: char a[]="abcd"; char a[]={'a','b','c','d'}; 两者的区别是第一种末尾会带一个'\0',而第二种不会带,所以可以扫描字符数组每一个字符,如果扫描到'\0',扫描结束 2.具体模拟strlen函数如下: int my_strlen(char* base) { int length = 0; while ((*base++)!='\0') { length++; }

qq_51950769的博客 1188

QT实现HTTP文件(夹)下载的完整流程与实战技巧

本文详细介绍了使用QT框架实现HTTP文件和文件夹下载的完整流程与实战技巧。通过QNetworkAccessManager等核心类,讲解了从单文件下载、大文件处理、进度显示、暂停/取消功能,到复杂的文件夹下载策略。文章重点剖析了断点续传、错误处理与网络健壮性等关键问题,为C++桌面应用集成稳定高效的下载功能提供了专业指导。

weixin_29239279的博客 279

关于char str[20]=““ 和 char str[20]=“ “

如题,定义一个长度为20的字符串,区别在于一个双引号中什么也没有,而另一个双引号中有一个空格。为了方便知道数组中存入的字符串究竟是什么,我们用调试功能,查看str数组中究竟是什么。 这是 str[20]="" 这是 str[20]=" " 这样就可以知道,当我们开了20字节的字符数组,且当字符不够而是时,它会自动加上'\0',所以我们可以看到,一个只重复了19次,一个只重复了18次,那么'\000' 究竟又是什么呢? 按照网上的说法:\000是\0的三位八进制 再看一个例子,我们可以.

qq_60450539的博客 2818

SAP 权限配置(复合角色)

复合角色创建步骤:业务场景:通常单一角色权限颗粒度划分比较细,当需要分配单一角色权限A、B(多个单一角色)给某账号用户Y时,可以先建立一个复合角色C,将A、B绑定到复合角色C中,再将角色C分配给账号Y即完成权限配置。 业务模拟: 1、PFCG创建复合角色: 2、在角色页面添加子角色 在角色分页内添加子角色,点击“菜单”分页中的“读菜单”即可导入子角色中的菜单: 3、将用户分配给...

willieyuan的博客 7087

AUTOSAR进阶图解==>AUTOSAR_SWS_CANNetworkManagement

本文介绍了AUTOSAR架构中的CAN网络管理(CanNm)模块,主要内容包括: 模块概述:CanNm是协调CAN网络节点状态转换的基础组件,采用去中心化设计,通过周期性发送网络管理PDU保持网络活跃状态,支持网络唤醒、睡眠和部分网络功能。 架构设计:CanNm位于AUTOSAR中间层,连接上层通信管理器(ComM)和底层CAN接口(CanIf),包含状态管理、PDU处理和定时器管理等子组件。 状态机设计:定义了三种主要模式(总线睡眠、准备睡眠和网络模式)及其转换逻辑,网络模式又包含重复消息、正常操作和准备

一名留德华的,康德的信徒的,专注于汽车电子领域的博客 2041

C语言学习(十五) 字符串函数

在字符串的计算部分,C语言函数库里面有很多处理字符串的函数,下面我们就介绍一些关于字符串处理函数的用法。具体包含字符串的输入输出getchar与putchar,还有string.h中的strlen、strcmp、strcpy、strcat、strchr、strstr等函数。 1. getchar与putchar函数 putchar函数 int putchar(int c); 向标准输出写一个字符,...

pan的博客 2177

Python爬虫教程:抓取地方政府网站的公开文件与政策信息

Web爬虫是指一种自动化脚本,用于模拟人类浏览器访问网页、提取网页内容的数据抓取工具。发送请求到目标网页;获取网页内容;解析网页内容,提取所需数据;将数据保存或进一步处理。爬虫可以抓取各种形式的数据,如文本、图片、文件等。本教程将重点展示如何抓取地方政府网站上公开的政策文件、公告等信息。许多政府网站都会采取一定的反爬虫措施,防止大量数据被爬取。IP封锁:如果短时间内大量请求来自同一IP,可能会被封锁。验证码:一些网站会使用验证码来验证访问者是否为机器人。动态加载。

2201_76125261的博客 1981

C语言学习笔记之初识字符串

本篇粗略讲述了关于字符串的相关知识点以作笔记使用

m0_69828905的博客 204

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

11.30C语言学习笔记(字符串)

11.30C语言学习笔记(字符串) 字符串 定义 文本处理的对象是字符串,描述的对象的某一特征的数据也常是字符串。(姓名,学号) C语言不提供字符串的类型,利用字符数组和字符指针来结合处理字符串。 tip 空格也算字符,字符串末尾系统会不写一个空字符。 法则——字符串必须以空字符 \0 为结尾! 字符串的初始化 数据类型 字符串名 [字符串长度]={初始化的内容} 完整初始化 char ch[3]={'A','B','C'}; (若完整的初始化,可以吧长度省略) char c1[]={'Hello W

FriedReich的博客 358

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

C语言学习笔记——用于处理字符及字符串的函数

介绍了部分处理字符和字符串的函数

a2606437441的博客 771

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

C语言学习笔记——字符串

1.1.字符串// 输出 5// 输出 6,因为包含 '\0'1.2.字符串常量“Hello”虽然是双引号,但是"Hello”会被编译器变成一个放在某处,

qq_46468829的博客 1785

C语言学习笔记-进阶(5)字符串函数1

字符串函数1

2301_79907403的博客 725

C语言学习笔记-进阶(7)字符串函数3

字符串函数(3)

2301_79907403的博客 465

C语言学习笔记:变量作用域、数组与字符串处理

变量作用域:全局变量跨文件,静态变量限作用域,同名变量就近原则。数组操作:初始化需谨慎,传参本质为指针,排序算法要熟练。字符串安全:优先使用fgets避免溢出,strcpystrcat注意目标空间大小。掌握这些知识点,轻松应对C语言核心问题!🚀 欢迎在评论区讨论交流!

weixin_66055196的博客 449

C语言学习笔记-进阶(6)字符串函数2

字符串函数(2)

2301_79907403的博客 401

C语言学习笔记——字符串操作

字符串是C语言中最重要的数据类型之一。最近借助《**C Primer Plus**》一书来学习C中的常用字符串操作,在此作为笔记记录。本文中的示例程序均出自《**C Primer Plus**》,操作系统为`CentOS 8.1.1911`,使用的编译器为`gcc 8.3.1`。

Gavin 738

C语言学习笔记:字符串

在c中没有专门的字符串变量,通常用一个字符数组来存放一个字符串,并且字符串总是以空字符'\0'作为字符串的结束语。字符串的本质是以 \0 结束的字符数组。

WHNWZY的博客 2112

C语言学习笔记 之字符串

//---------------------字符串 字符串是位于双引号中的字符序列   printf(".....") 在内存中以“\0”结束,所占字节比实际多一个 1.可以把一个字符常量赋给一个字符变量,但不能把字符串常量赋给字符变量 2.C语言中没有字符串变量, 可以用字符数组来存放字符串 字符数组 格式 char 数组名[常量表达式] ch

浅浅C的博客 602

C语言学习笔记-字符串

字符串初始化 访问字符串 字符串的拷贝 字符串初始化C 语言没有字符串类型,利用字符类型来模拟,以 \0 结尾。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 #include <stdlib.h> #include <string.h> #inc...

深页 152

C语言学习笔记之数组和字符串

数组是编程中常用的数据结构,用于存储相同类型的多个元素。数组可以是一维、二维或多维的。一维数组通过下标访问元素,内存中连续存储,定义时需指定数据类型和大小。二维数组则通过行和列访问元素,按行优先顺序存储。数组在使用前需定义,且只能逐个引用元素,不能整体引用。初始化时可以为数组元素赋初值,未初始化的元素值为随机数或默认值(如static数组为0)。字符数组是元素为字符类型的数组,可以用字符或字符串初始化。数组在编程中广泛用于排序、矩阵操作等场景,如冒泡排序、杨辉三角等。

2402_84707567的博客 1081
上一篇: C语言学习笔记—指针(四)函数指针、无类型指针、malloc、内存泄漏
下一篇: C语言学习笔记—字符串操作常用的函数strcpy();\strncpy();\strcat();\strcmp();\strchr();\strstr();\strtok();\strlwr();
Akzeptieren
博客等级 码龄8年 65粉丝 79原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值