C语言中的字符串与字符串函数

【C语言进阶】字符串&内存函数 前言: 字符串是一种非常重要的数据类型,但是C语言不存在显式的字符串类型,C语言中的字符串都以字符串常量的形式出现或存储在字符数组中。字符串常量适用于那些对它不做修改的字符串函数。同时,C 语言提供了一系列库函数来对操作字符串,这些库函数都包含在头文件 string.h 中。 目录 一、求字符串长度 strlen strlen函数的模拟实现 二、长度不受限制的字符串函数 strcpy strcpy函数的模拟实现 strcat strcat函数的模拟实现 str... 阅读详情

一、gets()函数

 gets()函数在其函数声明中声明括号中的类型为char *。但当我尝试下列操作时却给出了警告:p没有使用。

#include<stdio.h>
int main()
{
    char *p;
    gets(p);
    printf("%s",p);
    return 0;
}

    后来得知,char*只负责指向某一段字符串。程序中出现的没有赋给某个变量的双引号内的字符串,是属于静态存储类。把指针初始化到指向这个静态存储的字符串,只是引用了这个字符串。而初始化字符数组为这个字符串,是说把这个字符串复制到了一个分配好的变量存储空间,之后再修改的,就是数组里的字符。

所以如果想通过char *初始化字符串,要么指向一段字符串,否则只能用p = (char *)malloc(NUM*sizeof(char)); 申请空间来进行初始化。

     gets() 函数遇到换行符丢弃换行符,储存其他字符并在末尾添加空字符('\0')。与其对应的puts() 函数在结尾会多输出一个换行符。不过gets() 函数并不会检测录入的字符串是否越界,所以存在风险。C11标准新加入的gets_s()函数会抛弃多余的字符串,可以有效避免这个问题,但可能会导致中止或退出程序。

二、strlen() 函数

 该函数可以测出某一字符串的长度(从1计数),遇到空格不会终止会继续向下计数。该函数包括在string.h中。

三、strcat() 函数

该函数括号中有两个参数,作用是把第二个字符串的备份附加在第一个字符串末尾并返回char*指针(拼接第二个字符串后的

第一个字符串的地址)。不过同样该函数存在越界问题,还好有strncat() 函数可以完美解决这个问题。strncat() 会加入第

三个参数(数字)来规定最大添加字符数

四、strcmp() 函数

 该函数是把第二个字符串与第一个字符串进行比较。如果相通则返回0,如果第一个字符串的字典序位于第二个字符串之前,

则返回一个一个复数,否则返回一个正数。在ACS II中,大写字母位于小写字母之前。

 不过应当注意,该函数是比较的是字符串,而不是单个字符!一定是“ ” ,而不是‘ ’。

五、strcpy() 函数

 该函数是把第二个字符串复制给第一个字符串,并返回char*,即第一个字符串的地址。不过应当注意在gets() 中同样遇到

的问题,第一个字符串必须经过初始化才可以复制。例如下面代码就有问题:

char *str;

strcpy(str,"hahaha");     //有问题

       很明显该指针没有经过初始化。strcpy可以接受两个字符串指针或数组作为参数,但第一个指针必须指向一个数据对象。不过第一个参数不必指向字符串的开始,这个属性可以拷贝数组的一部分。

 同样为了防止越界,C还提供了strncpy() 函数,第三个参数(数字)指明可以拷贝的最大字符数。利用这一特性还可以筛选出带有一小段固定字符串的字符串来。在strcpy(target,cource,n) 中,如果拷贝到n个字符还没有拷贝完源字符串,就不会

拷贝空字符。所以应当把n设为第一个数组大小-1,并把数组最后一个元素设置为空字符:

#define TARGET 7
strcpy(qwords[i],temp,TARGET-1);
qwords[i][TARGET-1]='\0';


六、 sprintf() 函数(stdio.h中)

 该函数是把多个元素整合到一个字符串中,可以是数字也可以是字符串。例如:(last:Jack,first:Mick,prize:¥2500)

sprintf(formal,"&s,%s:%f",last,first,prize);

 结果为 Jack ,Mick:¥2500

 

 

 

 

 

 

 

 

 


 

 

 

 

 

【C语言】字符函数与字符串函数 一篇文章搞定字符函数与字符串函数 阅读详情

相关推荐

Bootloader详解,理解Bootloader看这篇就够了

这里写目录标题一、Bootloader作用(目的)二、完成Boot最终目的的前提条件三、对前提条件的详细说明3.1、对前提条件(1)的说明:3.2、对前提条件(2)的说明:3.3、对前提条件(3)的说明:3.4、对前提条件(4)的说明:3.4、对前提条件(5)的说明:四、loader是干啥的 一、Bootloader作用(目的) Bootloader=Boot + loader Boot的目的: 最终目的:跳到C语言中;为了C语言运行程序会进行一系列的初始化,系统一上电后如何通过一系列的设置让软件程序员

iduuigdg的博客 11万+

CString与string、char*的区别和转换

我们在C++的开发中经常会碰到string、char*以及CString,这三种都表示字符串类型,有很多相似又不同的地方,常常让人混淆。下面详细介绍这三者的区别、联系和转换: 各自的区别 char*: char*是一个指向字符的指针,是一个内置类型。可以指向一个字符,也可以表示字符数组的首地址(首字符的地址)。我们更多的时候是用的它的第二的功能,来表示一个字符串,功能与字符串数组

阳光日志 4万+

TIMER-XL:突破长上下文限制的Transformer时序预测新范式

本文深入解析了清华大学提出的TIMER-XL模型,这是一种突破长上下文限制的Transformer时序预测新范式。它采用Decoder-only架构与补丁级生成技术,并创新性地引入TimeAttention机制,有效解决了传统模型在处理海量历史数据时面临的“上下文瓶颈”问题,显著提升了长序列预测的精度与稳定性。

weixin_28340315的博客 445

C++ 学习——char * ,char a[ ],char ** ,char *a[] 的区别

C语言中由于指针的灵活性,导致指针能代替数组使用,或者混合使用,这些导致了许多指针和数组的迷惑,因此,刻意再次深入探究了指针和数组这玩意儿,其他类型的数组比较简单,容易混淆的是字符数组和字符指针这两个。 1.数组的本质 数组是多个元素的集合,在内存中分布在地址相连的单元中,所以可以通过其下标访问不同单元的元素。。 2.指针。 指针也是一种变量,只不过它的内存单元中保存的是一个标识其他位置的...

xiaohu的博客 1万+

电工识图入门:从电气符号到控制逻辑的完整指南

电工图纸是电气工程领域的通用语言,无论是设备安装、线路检修还是系统设计,看不懂图纸就像航海没有海图。很多初学者面对复杂的电气符号和线路走向感到无从下手,实际上只要掌握正确的识图方法,就能从简单的照明电路逐步过渡到复杂的自动化控制系统。 本文将从最基础的电气符号和图纸类型讲起,通过实际图纸案例解析,带你建立完整的识图逻辑。你将学会如何区分主回路和控制回路,如何追踪电流路径,以及如何结合图纸进行故障排查。无论你是电工新手、设备维护人员还是相关专业学生,这套方法都能帮你快速提升图纸理解能力。 1. 电气图纸基础:

chengyixian7877的博客 337

WRF后处理总结:wrf-python与NCL在WRF后处理中的基本应用——变量提取、计算与可视化

判断需要提取的变量与诊断量确定后,使用getvar函数进行提取。可使用ncdump-h命令查看wrfout中的变量,wrf中的诊断量分类也可从官方文档处查阅。判断绘图类型所需的可视化绘图类型,决定了你在WRF后处理中的计算步骤。1D点线图:ll_to_xy interpline2D填色图:interplevel3D剖面图:vinterp vertcross绘图、美化色标、XY轴、标签的设置等等。

weixin_43750300的博客 1万+

c/c++:char*定义常量字符串,strcmp()函数,strcpy()函数,寻找指定字符,字符串去空格

c/c++:char*定义常量字符串,strcmp()函数,strcpy()函数,寻找指定字符,字符串去空格

weixin_46838716的博客 3607

Python爬虫实战:全网政府招标信息采集与整合

本文详细介绍了如何使用Python构建一个完整的政府招标信息爬虫系统,涵盖了从数据采集、解析、存储到质量监控的全流程。多源采集:支持多个地方政府网站的同时采集智能解析:自动适应不同网站结构,智能提取关键信息异步高效:使用异步编程提高采集效率反爬应对:内置多种反爬虫应对策略数据质量:完善的数据清洗和质量监控机制易于扩展:模块化设计,便于添加新的数据源。

2201_76125261的博客 1380

C语言字符串拼接函数集

介绍C语言常见的字符串处理函数的功能和使用,后面附加了字符串处理函数集合

weixin_36184908的博客 9830

AI爬虫:一文讲通AI爬虫技术和原理,及34个AI爬虫工具推荐

AI 爬虫 是一种结合了传统网络爬虫技术和人工智能(AI)技术的工具,能够更智能、高效地从网页中提取和处理数据。与传统爬虫相比,AI 爬虫能够更好地处理动态内容、复杂网页结构以及非结构化数据,同时具备数据清洗、分类、情感分析等高级功能。

数据知道的博客 1万+

qwen2vl ValueError: Image features and image tokens do not match: tokens: 568, features 600

本文介绍了一个用于计算多模态数据集中样本token数量的Python工具,特别针对包含文本和图像的Qwen2-VL模型数据集。

q742971636的博客 1012

C语言string库函数介绍(附模拟实现)

strlen strcpy strcat strcmp strncpy strncat strncpy strstr strtok strerror memcpy memmove memset memcmp

The_west18的博客 9464

【Unity实战篇】| 游戏轮播图效果,多种实现思路及完整教程

在众多游戏的主界面、商城、图鉴或关卡选择界面中,我们常常能看到轮播图的身影。 它以动态、直观的方式展示游戏角色、皮肤、成就或场景,不仅极大地提升了界面的美观度和交互性,还能高效地引导玩家聚焦于核心内容。 本篇文章将从零开始,一步步在Unity中构建一个功能完备、性能优良的游戏轮播图。 使用UGUI系统,通过代码驱动,实现包括自动轮播、手动拖拽、分页指示器、无限循环等核心功能。 无论是UI新手还是希望优化现有方案的开发者,这篇文章都将为你提供清晰的思路和完整的解决方案。

努力前行,总会成为自己心中的那道光 4万+

C语言 字符串函数

前言:字符串是一种重要的数据类型,但是C语言没有显式的字符串数据类型,字符串通过字符串常量或字符数组方式储存。C语言提供了许多与字符串相关函数,可以在头文件<string.h>中查看函数声明,本章将会自行编写相关字符串函数 一、字符串长度函数 strlen 功能:字符串以 ‘\0’ 作为结束标志,strlen函数返回的是在字符串中 ‘\0’ 前面出现的字符个数(不包 含 ‘\0’ ) 库函数strlen函数声明: size_t&emsp;strlen(char const *string

kjl167的博客 1万+

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

C语言进阶-字符串函数与内存函数

前言 本章主要讲解: 字符和字符串的库函数的使用和注意事项 求字符串长度 strlen 长度不受限制的字符串函数 strcpy strcat strcmp 长度受限制的字符串函数 strncpy strncat strncmp 字符串查找 strstr strtok 错误信息报告 strerror 字符操作 内存操作函数 memcpy memmove memset memcmp 写在前面的话: C语言本身是没有字符串类型的 字符串通常放在常量字符串(不做修改)中或者字符数

~ 2410

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

【C语言】字符函数和字符串函数

编程中我们经常遇到需要处理字符和字符串的情况,为了能够让我们更加方便地操作,C语言提供了一系列相关的库函数。

2302_81115588的博客 1万+

C语言——字符和字符串函数

在我们进行编程的过程中,我们经常要处理字符和字符串,为了⽅便操作字符和字符串,C语⾔标准库中提供了 ⼀系列库函数,使用字符函数和字符串函数分别包含头文件 <ctype.h>和头文件<strling.h>。下面我就简单介绍一下常用的字符和字符串函数。(本篇文章参考一、字符函数C 语言中有一系列的函数是专门做分类的,简单来说就是判断这个字符是属于什么类型的,而使用这些函数都需要包含一个下面我们就简单介绍一下这些函数(可点击直接跳跃查看具体介绍)函数所给参数若符合下列的条件,返回真iscntrl。

2301_80004913的博客 2058

C语言——字符串函数(必收藏)

超细超用心的字符串函数详解(必收藏噢!入股不亏!)

weixin_59174190的博客 1万+

C语言—字符串函数

部分字符串函数的介绍及复现

渣檬Charman的博客 2391

【C语言】字符串函数

长度受限的字符串函数 字符串查找 错误信息报告 字符分类函数

weixin_60478154的博客 2万+

【C语言】C语言中的字符函数和字符串函数全解析

在C语言编程中,字符和字符串的处理是必不可少的。C语言标准库提供了丰富的字符和字符串函数,这些函数极大地简化了字符和字符串的操作。本文将详细介绍这些函数的使用方法、模拟实现以及一些实用的代码示例,帮助你更好地理解和掌握它们。

ChiaWei_Lee的博客 1662

C语言字符函数与字符串函数超详解

1.字符分类函数 2.字符转换函数 3.1strlen 的使用 3.2strlen 的模拟实现 4.1strcpy 的使用 4.2strcpy 的模拟实现 5.1strcat 的使用 5.2strcat 的模拟实现 6.1strcmp 的使用 6.2strcmp 的模拟实现 7.strncpy 函数的使用 8.strncat 函数的使用 9.strncmp 函数的使用 10.1strstr 的使用 10.2strstr 的模拟实现 11.strtok 函数的使用 12.strerror函数的使用

fhvyxyci的博客 1727

【C语言】字符函数、字符串函数,内存函数

各位小伙伴大家好!上期小编给大家讲解了C语言中的指针,接下来我们讲解一下字符函数、字符串函数,内存函数!以上就是小编对字符函数、字符串函数,内存函数的详细讲解。如果觉得小编讲的还可以,还请一键三连。互三必回!持续更新中~!

Guiat的博客 1508

【c语言】字符函数和字符串函数

目录1.函数介绍1.1 strlen1.2 strcpy 1.3 strcat 1.4 strcmp1.5 strncpy1.6 strncat 1.7 strncmp1.8 strstr1.9 strtok 1.10 strerror1.11 memcpy1.12 memmove 1.13 memset​编辑 1.14 memcmpstrcat的使用:strstr的使用: strstr的模拟实现: 1.9 strtok 1.10 strerror 注意:不要隐藏文件的扩

m0_74304693的博客 1733

c语言中的字符串函数

strstr函数,strchr函数,strlen函数,strcmp函数,strtok函数,strcat函数,strcpy函数

cyz322649的博客 1588

C语言字符函数与字符串函数

以上就是C语言中常见的字符函数以及字符串函数,希望通过本章的学习,大家能够利用这些函数使得代码更加简洁并且提高程序执行的效率,如果有感兴趣的小伙伴可以想一想这些函数是如何实现的,自己是否也可以手动实现这些函数。

技术不止是工具,也是探索世界的方式 1779
上一篇: 写递归函数的正确思维方法
下一篇: 马虎的算式
donCoder
博客等级 码龄9年 65粉丝 79原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值