【C语言基础考研向】11 gets函数与puts函数及str系列字符串操作函数

1.gets函数与puts函数

gets函数类似于scanf函数,用于读取标准输入.前面我们已经知道scanf函数在读取字符串时遇到空格就认为读取结束,所以当输入的字符串存在空格时,我们需要使用gets 函数进行读取.
gets函数的格式如下:

char *gets(char *str);

gets函数从STDIN (标准输入)读取字符并把它们加载到str(字符串)中,直到遇到换行符(\n) .如下例所示,执行后,我们输入"how are you",共11个字符,可以看到gets 会读取空格,同时可以看到我们并未给数组进行初始化赋值,但是最后有’\0’,这是因为gets遇到\n后,不会存储\n,而是将其翻译为空字符’\0’.

puts函数类似于printf函数,用于输出标准输出.puts函数的格式如下:

int puts(char *str);

函数 puts把 str(字符串)写入STDOU(标准输出). puts会将数组c中存储的"how are you"字符串打印到屏幕上,同时打印换行,相对于printf函数, puts只能用于输出字符串,同时多打印一个换行符,等价于printf(%sin",c).

#include <stdio.h>
//gets一次读取一行
int main()
{char c[20l;gets(c);puts(c);return 0;
}

执行结果如图:

how are you
how are you

2 str系列字符串操作函数(初试没那么重要,对于机试更重要一些)

str系列字符串操作函数主要包括strlen. strcpy. strcmp、strcat等. strlen函数用于统计字符串长度, strcpy函数用于将某个字符串复制到字符数组中, strcmp函数用于比较两个字符串的大小,strcat 函数用于将两个字符串连接到一起.各个函数的具体格式如下所示:

#include <string.h>
size_t strlen(char *str);
char *strcpy(char *to, const char *from);
int strcmp(const char *str1, const char *str2);
char *strcat(char *str1, const char *str2);

对于传参类型char*,直接放入字符数组的数组名即可.
接下来我们通过下例来具体学习str系列字符串操作函数,掌握每个函数的内部实现.

【例】str系列字符串操作函数的使用.

#include <stdlo.h>
#include <string.h>int mystrlen(char c[]){
int i = O;
while (c[i++]);
return i -1;}/ / strlen统计字符串长度
int main() {
int len;//用于存储字符串长度
char c[20];
char d[100] = "world";
gets(c);
puts(c);
len = strlen(c);
printf("len=%d\n",len);
len = mystrlen(c);
printf( "mystrlen len=%din", len);
strcat(c, d);
strcpy(d, c);//c中的字符串复制给d
puts(d);
printf("c?d %din", strcmp(c, d));
puts(c);
return O;
}

下图所示为我们输入"hello"后的执行结果,通过strlen 函数计算的字符串长度为5,我们自己写的函数就是strlen函数的计算原理,即通过判断结束符来确定字符串的长度.

strcpy函数用来将字符串中的字符逐个地赋值给目标字符数组.例中我们将c复制给d,就是将c中的每个字符依次赋值给d,也会将结束符赋值给d.注意,目标数组一定要大于字符串大小,即sizeof(d)>strlen©,否则会造成访问越界.

hello
hellolen=5
mystrlen len=5
helloworld
c?d 0
helloworld

strcmp函数用来比较两个字符串的大小,由于字符数组c中的字符串与d相等,所以这里的返回值为0,如果c中的字符串大于d,那么返回值为1;如果c中的字符串小于d,那么返回值为-1,如何比较两个字符串的大小呢?具体操作是从头开始,比较相同位置字符的ASCII码值,若发现不相等则直接返回,否则接着往后比较.例如,strcmp(“hello” ," how")的返回值是-1,即"“hello"小于"how”,因为第一个字符h相等,接着比较第二个位置的字符, e的ASCII码值小于o的,然后返回-1.

strcat函数用来将一个字符串接到另外一个字符串的末尾.例中字符数组c中存储的是
“hello”,我们将d中的"world"与c拼接,最终结果为"helloworld"。注意,目标数组必须大于拼接后的字符串大小,即sizeof©>strlen(“helloworld”).

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/638980.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大数据导论(4)---大数据应用

文章目录 1. 在互联网中的应用1.1 推荐系统1.2 长尾理论1.3 推荐方法与模型1.4 推荐系统应用 2. 在其他领域的应用2.1 企业营销2.2 智慧交通 1. 在互联网中的应用 1.1 推荐系统 1. 推荐系统产生&#xff1a;  (1) 互联网的飞速发展使我们进入了信息过载的时代&#xff0c;搜索…

【赠书第17期】Excel高效办公:文秘与行政办公(AI版)

文章目录 前言 1 了解Excel的强大功能和工具 2 提升Excel技能的方法 3 结合AI技术提升Excel应用 4 注意事项 5 推荐图书 6 粉丝福利 前言 随着人工智能&#xff08;AI&#xff09;技术的快速发展&#xff0c;我们的工作方式也在发生深刻变革。其中&#xff0c;Excel 作…

使用cmake进行完成开发实践

根据这个UML图进行cmake的实践 首先按照使用vscode在wsl2中配置clangd环境-CSDN博客的内容先创建出cmake项目。 之后在项目目录中创建include和src目录。 根据UML图&#xff0c;首先要完成Gun类的实现。分别在include&#xff0c;src目录下创建头文件和源文件&#xff0c;写入…

vue组件扩展

Vue中如何扩展一个组件 mixins、extends、slots、composition api 1、mixins 值可以是一个混合对象数组,混合实例可以包含选项,将在extend将相同的选项合并 mixins代码: var mixin{data:{mixinData:我是mixin的data},created:function(){console.log(这是mixin的created);},…

NAT44-ED features及节点图

VPP配置SNAT&#xff0c;内网接口GigabitEthernet2/0/0&#xff0c;外网接口GigabitEthernet3/0/0&#xff0c;NAT之后的地址为GigabitEthernet3/0/0接口的地址。 vpp# set interface state GigabitEthernet2/0/0 up vpp# set interface state GigabitEthernet3/0/0 up vpp# v…

上位机图像处理和嵌入式模块部署(qt图像处理)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 很多人一想到图像处理&#xff0c;本能的第一反应就是opencv&#xff0c;这也没有错。但是呢&#xff0c;这里面还是有一个问题的&#xff0c;不知…

Leetcode刷题笔记题解(C++):LCR 174. 寻找二叉搜索树中的目标节点

思路&#xff1a;二叉搜索树的中序遍历是有序的从大到小的&#xff0c;故得出中序遍历的结果&#xff0c;即要第cnt大的数为倒数第cnt的数 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeN…

JUC并发编程-集合不安全情况以及Callable线程创建方式

6. 集合不安全 1&#xff09;List 不安全 //java.util.ConcurrentModificationException 并发修改异常&#xff01; public class ListTest {public static void main(String[] args) {List<Object> arrayList new ArrayList<>();for(int i1;i<30;i){new Thr…

​WordPress顶部管理工具栏怎么添加一二级自定义菜单?

默认情况下&#xff0c;WordPress前端和后台页面顶部都有一个“管理工具栏”&#xff0c;左侧一般就是站点名称、评论、新建&#xff0c;右侧就是您好&#xff0c;用户名称和头像。那么我们是否可以在这个管理工具栏中添加一些一二级自定义菜单呢&#xff1f; 其实&#xff0c…

力扣746. 使用最小花费爬楼梯

动态规划 思路&#xff1a; 定义 dp[i] 为到达下标 i 层的最小花费&#xff1b;则状态转移方程为&#xff1a; 第 i 层可以从第 i - 1 层爬一层或者第 i - 2 层爬两层到达&#xff1b;则 dp[i] std::min(dp[i - 1] cost[i - 1], dp[i - 2] cost[i - 2])初始状态&#xff1a…

编程笔记 html5cssjs 050 CSS表格2-1

编程笔记 html5&css&js 050 CSS表格2-1 一、表格边框二、全宽表格三、合并表格边框四、表格宽度和高度五、水平对齐六、垂直对齐七、表格内边距八、可悬停表格九、条状表格十、表格颜色十一、响应式表格十二、CSS 表格属性十三、练习小结 使用 CSS 可以极大地改善 HTML…

SpringSecurity+JWT前后端分离架构登录认证

目录 1. 数据库设计 2. 代码设计 登录认证过滤器 认证成功处理器AuthenticationSuccessHandler 认证失败处理器AuthenticationFailureHandler AuthenticationEntryPoint配置 AccessDeniedHandler配置 UserDetailsService配置 Token校验过滤器 登录认证过滤器接口配置…

应用层—HTTPS详解(对称加密、非对称加密、密钥……)

文章目录 HTTPS什么是 HTTPSHTTPS 如何加密HTTPS 的工作过程对称加密非对称加密 HTTPS 什么是 HTTPS HTTPS 也是一个应用层的协议。是在 HTTP 协议的基础上引入的一个加密层。 由来&#xff1a;HTTP 协议内容都是按照文本的方式明纹传输&#xff0c;这就导致在传输过程中出现…

AndroidStudio 无法打开 arb 文件

问题描述 在做Flutter国际化的时候&#xff0c;AndroidStudio突然无法打开arb文件。 原因分析&#xff1a; Android Studio 默认可能并不支持直接打开.arb文件&#xff0c;因为.arb文件通常用于Flutter的国际化资源。为了在Android Studio中编辑和查看.arb文件&#xff0c;您…

Springboot+vue的校园疫情防控系统(有报告),Javaee项目,springboot vue前后端分离项目。

演示视频&#xff1a; Springbootvue的校园疫情防控系统&#xff08;有报告&#xff09;&#xff0c;Javaee项目&#xff0c;springboot vue前后端分离项目。 项目介绍&#xff1a; 本文设计了一个基于Springbootvue的前后端分离的校园疫情防控系统&#xff0c;采用M&#xff…

2023年12月青少年机器人技术等级考试(四级)理论综合试卷

2023年12月青少年机器人技术等级考试&#xff08;四级&#xff09;理论综合试卷 单选题 第 1 题 单选题 Arduino UNO/Nano主控板&#xff0c;当数字引脚输出信号为高电平时&#xff0c;对应的电压是 &#xff1f;&#xff08; &#xff09; A.0V B.5V C.-0.5 ~ 1.5V D.3…

Web安全-CTF中的常见命令总结

Web安全-CTF中的常见命令总结 cat命令与常用选项 cat命令用于查看文件内容&#xff0c;并且将文件内容打印到标准输出流&#xff0c;并且在不跟上文件或跟上 -时将直接读取标准输入流&#xff1a; r123localhost:~$ cat - 123test 123test如上所示&#xff0c;输入123test&a…

「 论文投稿 」《IEEE Transactions on Robotics》录用经历

一、前言 小白博士期间投递的第1篇SCI&#xff0c;也是硕士课题的结尾研究&#xff0c;实验做了1个月&#xff0c;初稿写了3个月&#xff0c;感谢加拿大刘教授8个月的修改指导&#xff0c;然后投递。 二、时间轴 《IEEE Transactions on Robotics》IEEE T-RO 1. 2023年2月17日…

[SS]语义分割_转置卷积

转置卷积&#xff08;Transposed Convolution&#xff09; 抽丝剥茧&#xff0c;带你理解转置卷积&#xff08;反卷积&#xff09; 目录 一、概念 1、定义 2、运算步骤 二、常见参数 一、概念 1、定义 转置卷积&#xff08;Transposed Convolution&#xff09;&#xf…

Paimon教程

教程来自尚硅谷 目录 教程来自尚硅谷1. 概述1.1 简介1.2 核心特性1.3 文件布局1.3.1 LSM Trees 2. 集成Flink2.1 安装&配置2.2 Catalog 3. 进阶使用3.1 写入性能3.1.1 并行度3.1.2 Compaction3.1.3 触发Compaction的Sorted Run数3.1.4 写入初始化3.1.5 内存 3.2 读取性能3.…